我在python中添加两个数字。
A = 29.000988000000003
B = 10
python A+B
中的给出了39.00098800000001.
有人可以解释一下究竟发生了什么吗?根据我的说法,最后一位数应该是3而不是1.即使B = 10.0
也给出相同的结果..
基本上我想知道python的机器精度是什么以及如何避免此类事件?
答案 0 :(得分:0)
我强烈建议您阅读:
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
如果你想避免这些问题,请查看十进制python模块:
https://docs.python.org/2/library/decimal.html
例如:
>>> from decimal import *
>>> getcontext().prec = 17
>>> a = Decimal('29.000988000000003')
>>> b = Decimal('10')
>>> a + b
Decimal('39.000988000000003')
答案 1 :(得分:0)
引用文档:
不幸的是,大多数小数部分不能完全表示为 二进制分数。结果是,一般来说,十进制 您输入的浮点数仅由二进制近似 实际存储在机器中的浮点数。