你应该将浮点数与0.0进行比较

时间:2012-05-03 22:58:27

标签: floating-point compare

请记住如何将浮点数与==与常数进行比较,因为常量的浮点表示可能不存在。 0.0也是如此吗?或者大多数(或所有)浮点引擎都有0.0

的特殊表示

我正在寻找有用的语言,IEEE规范或浮点引擎。

2 个答案:

答案 0 :(得分:2)

更好的想法是将两个浮点值之间的差值的绝对值与一个小的(epsilon)值进行比较而不是零:

private static final double EPSILON = 1.0e-6;

if (Math.abs(x-y) < EPSILON) {
   // process here
}

x或y等于零的值是特殊情况。

答案 1 :(得分:2)

保证零可以在任何IEEE-754系统上表示,而且我知道没有其他浮点系统,其中零不能完全表示。这并不是说这样的系统不存在,但它会高度不寻常。