如何在python中求和数字?

时间:2014-10-23 11:43:53

标签: python sum

我在python中添加两个数字。

A = 29.000988000000003
B = 10
python A+B中的

给出了39.00098800000001.

有人可以解释一下究竟发生了什么吗?根据我的说法,最后一位数应该是3而不是1.即使B = 10.0也给出相同的结果..

基本上我想知道python的机器精度是什么以及如何避免此类事件?

2 个答案:

答案 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)

引用文档:

  

不幸的是,大多数小数部分不能完全表示为   二进制分数。结果是,一般来说,十进制   您输入的浮点数仅由二进制近似   实际存储在机器中的浮点数。

https://docs.python.org/2/tutorial/floatingpoint.html