不同的划分结果python

时间:2018-04-12 16:43:50

标签: python python-3.x division

我的python 3.6.3中有一些奇怪的结果。一旦我尝试了一些代码,我就会遇到这个问题。

>>> a = 10**32
>>> print(a/1000/1000)
9.999999999999999e+25

如你所见,它实际上并不正确,但如果我走另一条路,我会达到我的期望

>>> print(a/1000000)
1e+26

相同
>>> 10**26
>>> 10**31

有人可以解释我的错误吗?我试过把它写在一行没有结果

1 个答案:

答案 0 :(得分:1)

>>> a = 10**32
>>> a/1000/1000
9.999999999999999e+25

如您所知,Python 3除法不再是整数除法(a//1000//1000本来可以正常工作),因此您在这里执行2个浮点除法,引入(不必要的)浮点累积错误

>>> a/1000000
1e+26

这只执行一个除法,因此即使结果是浮点,也会降低浮点错误效果。