2016-06-09 135 views
1

round(1.4 999 999 999 999 999)(不含空格)被四舍五入到2 但 round(1.4 99 999 999 999 999)(不含空格)被四舍五入到1四舍五入在Python

我想这需要做的不精确浮点表示,但看不懂第一个表示被解释为接近于2而不是1.

+0

https://docs.python.org/2/tutorial/floatingpoint.html#tut- fp-issues –

回答

3

因为1.4 999 999 999 999 999在解析时正好是1.5,所以它们之间的差别太小而不能表示那么大。

1.4 99 999 999 999 999足够低解析为“小于1.5”,其实1.4999999999999988897769753748434595763683319091796875,这显然是小于1.5

+0

如果这是一个普遍问题,也许我可以从问题中删除Python位。 –

+0

这是相当普遍的,除了“循环”操作的确切语义因语言不同而不同:在Python中,“round”正确舍入;对于所有语言来说这不一定是真的。 OTOH,与浮点运算本身相比,浮点运算更像浮点运算。 –