我在python中添加两个数字。
A = 29.000988000000003
B = 10
在python中,A+B
给出39.00098800000001.
有人能解释一下到底发生了什么吗?根据我的说法,最后一个数字应该是3而不是1。即使使用B = 10.0
也会得到相同的结果。。
基本上我想知道python的机器精度是多少,以及如何避免此类事件?
我强烈建议阅读以下内容:
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')
引用自文档:
不幸的是,大多数小数不能精确地表示为二进制分数。结果是,一般来说,小数输入的浮点数仅近似于二进制机器中实际存储的浮点数。
https://docs.python.org/2/tutorial/floatingpoint.html