Python中的舍入

Pie*_*e B 3 floating-point rounding python-3.x

round(1.4 999 999 999 999 999)(不带空格)四舍五入为 2,但 round(1.4 99 999 999 999 999)(不带空格)四舍五入为 1。

我想这与不精确的浮点表示有关,但无法理解第一个表示如何解释为更接近 2 而不是 1。

har*_*old 5

因为1.4 999 999 999 999 999当 parsed 正好是 1.5 时,它们之间的差异太小而无法表示为那个量级。

但是1.4 99 999 999 999 999足够低,可以解析为“小于 1.5”,实际上是 1.4999999999999988897769753748434595763683319091796875,显然小于 1.5