为什么';当我在java中尝试比较double时,它不起作用吗?

为什么';当我在java中尝试比较double时,它不起作用吗?,java,comparison,double,Java,Comparison,Double,我知道这是一个愚蠢的问题,但我无法在谷歌上找到答案,所以这是我最后的选择 为什么当我试图比较两个我知道相等的变量的双精度时,它返回false?下面是一个我希望更清楚的例子: double x = 323.23 double y = 323.23 System.out.println(x==y) 输出: false 为什么会发生这种情况?另外,如果你只是比较两个不是变量的双精度,或者一个是变量的双精度和一个不是变量的双精度,为什么它打印为真?例如: double x = 323.23 Syst

我知道这是一个愚蠢的问题,但我无法在谷歌上找到答案,所以这是我最后的选择

为什么当我试图比较两个我知道相等的变量的双精度时,它返回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

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

你确定它返回false,因为它在我的第一部分打印
true
时返回true。请打印你真实的、可编译的代码。-1认真地说,伙计,你应该在发布这样的问题之前检查你的事实。您的代码在任何符合Java的实现上都不会输出“false”。现在,您可能看到浮点和其他代码中的
=
的奇怪结果。。。但是如果你想发布这样的假例子而不是真实的代码,我们帮不了你。Double和Object与这个问题有什么关系?此外,
Double.compareTo()
的语义与
=