我的python 3.6.3中有一些奇怪的结果。一旦我尝试了一些代码,我就会遇到这个问题。
>>> a = 10**32
>>> print(a/1000/1000)
9.999999999999999e+25
如你所见,它实际上并不正确,但如果我走另一条路,我会达到我的期望
>>> print(a/1000000)
1e+26
与
相同>>> 10**26
>>> 10**31
有人可以解释我的错误吗?我试过把它写在一行没有结果
答案 0 :(得分:1)
>>> a = 10**32
>>> a/1000/1000
9.999999999999999e+25
如您所知,Python 3除法不再是整数除法(a//1000//1000
本来可以正常工作),因此您在这里执行2个浮点除法,引入(不必要的)浮点累积错误
>>> a/1000000
1e+26
这只执行一个除法,因此即使结果是浮点,也会降低浮点错误效果。