判断两个浮点数是否相同的方法似乎有很多。以下是我发现的一些示例:
fabs(x - y) < n * FLT_EPSILON * fabs(x)
或者fabs(x - y) < n * FLT_EPSILON * fabs(y)
fabs(x - y) < n * FLT_EPSILON * fabs(x + y)
fabs(x - y) < n * FLT_EPSILON * fabs(x + y) || fabs(x - y) < FLT_MIN)
fabs(x - y) / sqrt(x * x + y * y + FLT_EPSILON * FLT_EPSILON) < n * FLT_EPSILON
我真的对他们感到困惑。假设有一个比较两个浮点数的最佳方法,这是最快且最准确的,其他方法甚至不应该存在。所以这些不同的方式肯定各有优劣。
我的问题是:哪种方法最快/最准确/最实用?
参考链接:
http://accu.org/index.php/journals/1558(1和 4)
https://stackoverflow.com/a/10335601/5399734(2和3)
澄清:至少,我不认为“最快/最准确”主要是基于意见的。