如何在python中求和数字



我在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

最新更新