在進行浮點數計算時它們無法精確表達出所有的十進制小數位。
a = 4.1
b = 5.329
print(a+b)
9.428999999999998
這些誤差實際上是底層CPU的浮點運算單元和IEEE754浮點數算數標准的一種“特性”。python的浮點數類型保存的數據采用的是原始表示形式,因此使用float實例時就不能避免這樣的誤差。
我們可以使用decimal模塊避免這種操作(如果不介意犧牲下性能):
from decimal import Decimal
a = Decimal('4.1')
b = Decimal('5.329')
print(a+b)
9.429
注意Decimal的參數必須是字符串,不能是浮點型,否則誤差依舊存在。