Python浮点数(小数)运算误差的原因和解决方法

Python浮点数(小数)运算误差的原因和解决方法

原因解释:

浮点数(小数)在计算机中实际是以二进制存储的,并不精确。

比如0.1是十进制,转换为二进制后就是一个无限循环的数:

0.00011001100110011001100110011001100110011001100110011001100

python默认的浮点类型只能保证小数点后8位的精确度。

python是以双精度(64bit)来保存浮点数的,后面多余的会被砍掉,所以在电脑上实际保存的已经小于0.1的值了,后面拿来参与运算就产生了误差。

解决办法:

使用decimal库

from decimal import *

a = Decimal(‘4.2’)

b = Decimal(‘2.1’)

c = a * b

相关推荐