为什么浮点数恰好是整数时尾随.0?

Pyr*_*cal 2 java string floating-point

仔细阅读这个问题,因为我不是要求如何摆脱尾随零,这很容易.

我问的是为什么123d会变成"123.0"?

IEEE 64位浮点数可以精确地表示0到2 ^ 52的整数,因此这不是精度损失,而是Double.toString()实现期间的决定.

我的问题是他们为什么做出这样的决定呢?他们为什么不打印123?

Mik*_*ton 8

除此之外,它导致表示的清晰度 - 当在简单的算术运算之后,似乎是整数值的数字突然在小数位后的数字后长时间跟踪时,用户经常会感到困惑.


jqn*_*qno 5

这样,我觉得它更容易看到它实际上是双重的,而不是int,我猜:).