Java 中两个双精度值的简单比较会产生一些问题。让我们考虑以下 Java 中的简单代码片段。
package doublecomparision;
final public class DoubleComparision
{
public static void main(String[] args)
{
double a = 1.000001;
double b = 0.000001;
System.out.println("\n"+((a-b)==1.0));
}
}
上面的代码似乎返回 true,即表达式 ((a-b)==1.0)的求值,但它没有返回。它返回 false,因为这个表达式的求值是 0.9999999999999999,实际上应该是 1.0,而 1.0不等于 1.0,因此条件的求值为布尔 false。克服这种情况的最佳和建议的方法是什么?