为什么(1.0d == 1.0d - Double.MIN_VALUE)返回true而Double.compare(1.0d,1.0d - Double.MIN_VALUE)返回相等?

时间:2018-02-21 17:06:37

标签: java floating-point

当在Java中我比较(1.0d == 1.0d - Double.MIN_VALUE)时,它返回true,即使实际非常接近1.0d应该大于(1.0d - Double.MIN_VALUE)。

如果我使用Double.compare(1.0d,1.0d - Double.MIN_VALUE),则返回0.表示这两个值相等。

当我打印Double.doubleToLongBits()时,为1.0和1.0d打印相同的值 - Double.MIN_VALUE。

如果我也使用Double.MIN_NORMAL,也会发生同样的情况。

为什么会这样?我该怎么做才能使比较返回正确的结果?

谢谢!

0 个答案:

没有答案