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

Eri*_*icY 5 python python-3.x

我试图在Python 3.5.2中这样做:

int(204221389795918291262976/10000)
Run Code Online (Sandbox Code Playgroud)

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

它在Python 2.7.12中工作正常,结果是: 20422138979591829126L

知道为什么Python 3给了我错误的结果吗?

Jea*_*bre 6

在python 3中,你必须//明确地使用整数除法,否则浮点除法甚至会在2个整数之间应用.

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

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

204221389795918291262976//10000
20422138979591829126
Run Code Online (Sandbox Code Playgroud)

(你甚至不需要转换到int这里,int因为两个术语都是结果int)

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

from __future__ import division
Run Code Online (Sandbox Code Playgroud)