如何在Java中比较两个double值?
Java中两个double值的简单比较会产生一些问题。让我们考虑以下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
因此不等于,因此条件的求值为boolean false
。解决这种情况的最佳建议方法是什么?
回答:
基本上,你不应该进行精确比较,而应该执行以下操作:
double a = 1.000001;double b = 0.000001;
double c = a-b;
if (Math.abs(c-1.0) <= 0.000001) {...}
以上是 如何在Java中比较两个double值? 的全部内容, 来源链接: utcz.com/qa/433002.html