请记住如何将浮点数与==与常数进行比较,因为常量的浮点表示可能不存在。 0.0也是如此吗?或者大多数(或所有)浮点引擎都有0.0
的特殊表示我正在寻找有用的语言,IEEE规范或浮点引擎。
答案 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系统上表示,而且我知道没有其他浮点系统,其中零不能完全表示。这并不是说这样的系统不存在,但它会高度不寻常。