>>> from decimal import Decimal
>>> a=Decimal(100.1)
>>> b=Decimal(100.1)
>>> c=Decimal(200.2)
>>>print(a+b==c)

最後的結果確實False,實在讓人無法理解。

後來搜尋了一番,找到了原因。

計算機的記憶體、cpu暫存器等等這些硬體單元都是有限的,只能表示有限位數的二進位制位,因此儲存的二進位制小數就會和實際轉換而成的二進位制數有一定的誤差。(你可以試著將0.3轉化為二進位制表示,也將出現一個迴圈小數。)實際上,大多數情況下,小數在計算機中是以一種類似科學計數法的形式表示的,具體的可以參考一下其他的資料。但即便如此,仍然存在誤差。

所以在python中不建議直接將兩個浮點數進行大小比較,或者做精確的計算,往往會得到意想不到的結果。