前言
可能各位对计算机比较了解的人都明白为什么浮点数处理会出现丢失精度的问题,这里就不赘述了。
在如下运算中,都可发现精度问题
>>> 2.0 - 1.9
0.10000000000000009
>>> 0.5 - 0.4
0.09999999999999998
解决方法
可以使用decimal模块进行运算,可以得到一个精确的结果
>>> inport decimal
>>> a = decimal.Decimal('0.5')
>>> b = decimal.Decimal('0.4')
>>> a - b
Decimal('0.1')
如果想把值取出来可以这么做
>>> res = a - b
>>> float(res.to_eng_string())
0.1