如何在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

回到顶部