【发布时间】:2012-12-20 18:57:08
【问题描述】:
我想比较两个双精度值如下:
Double doubleValue = Double.valueOf(Long.MAX_VALUE);
Double doubleValue2 = Double.valueOf(Long.MAX_VALUE+1d);
显然 doubleValue 和 doubleValu2 不相等,由于 1d 加法,2nd 更大。
但无论我使用 compare() 还是 equals() 方法,这两种方法都会为两个值返回相等的结果。有什么方法可以在这里比较而不丢失准确性。
提前致谢。
【问题讨论】:
-
这两个双精度值是完全相等的,因为双精度值没有足够的精度来衡量差异。
-
我认为您错误地使用了“显然”这个词。 “显然是 XYZ”是指根据现有证据,XYZ 似乎是真实的。我想您可能的意思是您期望数字相同,但显然它们不一样。
-
当
double会产生相同的结果时,我会避免使用Double,因为它会增加您的示例(和一般代码)不需要的复杂性。
标签: java comparison double