当我尝试比较java中的双打时,为什么它不起作用?

时间:2014-06-08 06:38:14

标签: java comparison double

我知道这是一个愚蠢的问题,但我无法在谷歌上解决这个问题,所以这是我的最后一招。

为什么当我尝试比较两个我认识的变量相等的双精度时,它会返回false?这是一个我希望更清楚的例子:

double x = 323.23
double y = 323.23
System.out.println(x==y)

输出:

false

为什么会这样?另外,如果你只是比较两个不是变量的双精度数或一个变量的双精度数和不变量的双精度数,为什么它会打印为真呢?例如:

double x = 323.23
System.out.println(x==323.23)
System.out.println(323.23==323.23)

输出:

true
true

1 个答案:

答案 0 :(得分:-7)

您不应该在对象级别上比较双打。您的示例打印true,因为编译只是优化您的代码,以便x和y指向同一个对象。而是使用Double.equals()。如果您考虑如何表示双精度,即使相等的值可以具有不同的位配置。如果检查较小/更大,请使用Double.compareTo()方法。