2016-06-09 102 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,與浮點運算本身相比,浮點運算更像浮點運算。 –