0
有人可以解釋這一點嗎?Python四捨五入錯誤?
輸入:
58/100*100
結果:
57.99999999999999
然而...
輸入:
26/100*100
結果:
26.0
另外,我怎麼能一致地得到像第二種情況下的結果?
有人可以解釋這一點嗎?Python四捨五入錯誤?
輸入:
58/100*100
結果:
57.99999999999999
然而...
輸入:
26/100*100
結果:
26.0
另外,我怎麼能一致地得到像第二種情況下的結果?
這都是由於浮點運算 以及python評估包含數字文字的表達式的方式的微妙變化。
由於python 3,您的表達式將以浮點計算;在此之前,將使用整數算術。
在IEEE754浮點上,0.58距離真值比0.26更遠。這足以甩掉你的輸出格式化程序正在使用的啓發式。
在劃分之前執行乘法可以在某些情況下有所幫助,並且可以在此處執行,因爲產品可以精確地表示。
這不是Python錯誤。這就是浮點算法的工作原理。 –
閱讀[Python浮點不準確性](https://docs.python.org/2/tutorial/floatingpoint.html)。 – Mangohero1
此問題是二進制浮點計算固有的。試試'Decimal'模塊,它可以讓你用十進制數學運算,不受這些影響,但速度較慢。 – kindall