【问题标题】:Strange error in python3 when doing big int calculation进行大整数计算时python3中的奇怪错误
【发布时间】:2016-09-03 15:01:54
【问题描述】:

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

int(204221389795918291262976/10000)

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

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

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

【问题讨论】:

  • 您的第一个错误是假设结果相似,真的。 Python 2 和 Python 3 具有许多相似的特征,但在各个方面也有所不同。不要将一种实现中的行为授予另一种实现。

标签: python python-3.x


【解决方案1】:

在 python 3 中,您必须明确使用整数除法//,否则即使在 2 个整数之间也将应用浮点除法。

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

在您的示例中:(可在 python 2 和 python 3 中使用,因此向后兼容!)

204221389795918291262976//10000
20422138979591829126

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

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

from __future__ import division

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多