下輸出出乎我的意料:總和花車:意想不到的結果
1.1 + 2.2
=> 3.3000000000000003
一個意外的小數字從總和上來。其他加數也不會發生這種情況,例如:
3.0 + 0.3
=> 3.3
我在Python 2.7和3.4中都試過,但結果是一樣的。這個結果的意外結果是什麼原因?
下輸出出乎我的意料:總和花車:意想不到的結果
1.1 + 2.2
=> 3.3000000000000003
一個意外的小數字從總和上來。其他加數也不會發生這種情況,例如:
3.0 + 0.3
=> 3.3
我在Python 2.7和3.4中都試過,但結果是一樣的。這個結果的意外結果是什麼原因?
最終,當涉及到它時,計算機正在使用二進制數字。一些小數不會像我們想要的二進制數字那樣整齊。結果值包括一些遺留的數字垃圾。
主要是因爲二進制不能很好地使用小數(2和10是互質)並且浮點數的精度有限。
更完整的討論,請參見:python floating number和Limiting floats to two decimal points而是一個合理的解決方案可能是指定一個像所需精度:
>>> a = 1.1 + 2.2
>>> a = round(a,1)
>>> a
3.3
我認爲[文檔提到這個(HTTPS://docs.python .ORG/2 /教程/ floatingpoint.html)。 –
必須閱讀:http://floating-point-gui.de/ – JBernardo