Python之执行精确的浮点数运算

有时候:代码上数字计算可能会有如同下面的误差

原因:

这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征。 由于Python的浮点数据类型使用底层表示存储数据,因此你没办法去避免这样的误差。
a=3.2
b=2.1
print(a+b)  # 5.300000000000001
print(a+b==5.3)  # False

如果:对浮点数执行精确的计算操作,并且不希望有任何小误差的出现

解决:decimal 模块

from decimal import Decimal
a = Decimal('4.2')
b = Decimal('2.1')
print(a + b)  # Decimal('6.3')
print((a + b) == Decimal('6.3'))  # True
注:
# 真实世界中很少会要求精确到普通浮点数能提供的17位精度。 因此,计算过程中的那么一点点的误差是被允许的。
# 第二点就是,原生的浮点数计算要快的多-有时候你在执行大量运算的时候速度也是非常重要的



原文地址:https://www.cnblogs.com/zzy-9318/p/10461947.html