2017-08-25 147 views
0

有人可以解釋這一點嗎?Python四捨五入錯誤?

輸入:

58/100*100 

結果:

57.99999999999999 

然而...

輸入:

26/100*100 

結果:

26.0 

另外,我怎麼能一致地得到像第二種情況下的結果?

+0

這不是Python錯誤。這就是浮點算法的工作原理。 –

+0

閱讀[Python浮點不準確性](https://docs.python.org/2/tutorial/floatingpoint.html)。 – Mangohero1

+1

此問題是二進制浮點計算固有的。試試'Decimal'模塊,它可以讓你用十進制數學運算,不受這些影響,但速度較慢。 – kindall

回答

2

這都是由於浮點運算 以及python評估包含數字文字的表達式的方式的微妙變化。

由於python 3,您的表達式將以浮點計算;在此之前,將使用整數算術。

在IEEE754浮點上,0.58距離真值比0.26更遠。這足以甩掉你的輸出格式化程序正在使用的啓發式。

在劃分之前執行乘法可以在某些情況下有所幫助,並且可以在此處執行,因爲產品可以精確地表示。