2012-05-01 39 views
1

我計算如下:浮點給出了錯誤的答案

>>> float(10.0-9.2) 
0.800000000000000*7* 

即使做了10.0-9.2上述結果。爲什麼額外的7會出現在結果中?

我在python 3.2上。

+1

[Python floating error with float numbers]的可能重複(http://stackoverflow.com/questions/5997027/python-rounding-error-with-float-numbers) – recursive

+0

爲什麼你甚至會將float的結果減法到浮點數?你會期望它會成爲一個浮點數嗎? – mata

+0

@mata:只能肯定 – Rohan

回答

10

浮點算法內置問題,因爲它基於數字的二進制近似。

Python文檔中有a good explanation of this

如果您需要更精確的答案,您可以檢出the decimal module

+0

謝謝..一直在尋找這個。解答我的問題 – Rohan

+0

你大大緩解了我的痛苦。起初我認爲這是一個錯誤,但它看起來太完美不準確,不能成爲與python類型邏輯有關的數學錯誤。 –

0

這是所有平臺上二進制浮點運算的典型代碼。如果您的應用程序不允許在此誤差範圍內發生舍入錯誤,則可以使用Decimal對象。

+2

當然,'decimal'也實現了浮點數,只是基礎不同 - 意思是說,你仍然會得到不準確的地方,只是人們習慣的那些。 – delnan

+0

是的,他們只是不是「二進制」的浮點數。 –