进行大型int计算时python3中的奇怪错误

时间:2016-09-03 15:01:54

标签: python python-3.x

我试图在Python 3.5.2中执行此操作:

int(204221389795918291262976/10000)

但得到了意想不到的结果:20422138979591827456

它在Python 2.7.12中运行良好,结果是:20422138979591829126L

任何想法为什么Python 3给了我错误的结果?

1 个答案:

答案 0 :(得分:6)

在python 3中,你必须明确地使用整数除法//,否则浮点除法将适用于2个整数。

这是python 2和python 3之间的主要变化之一

在你的例子中:(将在python 2和python 3中工作,因此它向后兼容!)

204221389795918291262976//10000
20422138979591829126

(您甚至不需要在此转换为int,结果为int,因为这两个字词均为int

顺便说一句,如果你想让这个bug与python 2一起工作,那么它也是可能的:)

from __future__ import division