浮点数的一个普遍问题是它们并不能精确的表示十进制数。 并且,即使是最简单的数学运算也会产生小的误差,比如:
a1 = 0.675412
b1 = 0.675411
print(a1 - b1) # 1.0000000000287557e-06
如果你想更加精确(并能容忍一定的性能损耗),你可以使用decimal
模块:
from decimal import Decimal
a = Decimal("0.543211")
b = Decimal("0.543209")
print(a - b) # 0.000002