首先说明一点,python的整数运算是没有误差的,总是精确的。问题出在浮点数即小数运算中,比较典型的例子是:
>>> a = 0.1
>>> b = 0.2
>>> a + b
0.30000000000000004
连小学生都知道的a + b是0.3,为什么python会算错呢?
原来我们用到的计算机对数据的存贮和运算都是以二进制进行的。但不是每个十进制的数字都能正好有二进制的数对应,会有极小的误差,虽然这种误差是极小的。如果需要更精确的计算可以导入decimal模块来运算。
首先说明一点,python的整数运算是没有误差的,总是精确的。问题出在浮点数即小数运算中,比较典型的例子是:
>>> a = 0.1
>>> b = 0.2
>>> a + b
0.30000000000000004
连小学生都知道的a + b是0.3,为什么python会算错呢?
原来我们用到的计算机对数据的存贮和运算都是以二进制进行的。但不是每个十进制的数字都能正好有二进制的数对应,会有极小的误差,虽然这种误差是极小的。如果需要更精确的计算可以导入decimal模块来运算。