gpt4 book ai didi

python - 为什么在 Python 3.7 中 int(x-1) == x True 有一些 x 值?

转载 作者:太空狗 更新时间:2023-10-29 17:16:25 27 4
gpt4 key购买 nike

在 Python 3.7 中 int(x-1) == x 对于 x = 5e+17True为什么会这样,我该如何防止这个错误?

要重现,请将其粘贴到您的 Python 控制台中:

int(5e+17-1) == 5e+17
>True

(我正在使用 int,因为 x 是除法的结果,我需要将它解析为 int。)

最佳答案

让我们从确定 5 == 5.0True 开始,即使 5int5.0 是一个float。这是设计使然。

如果我们牢记这一点,那么我们也可以接受 int(5e+17) == 5e+17True

最后,我们看到 int(5e+17) == int(5e+17-1) 也是 True 因为 precision错误(感谢@juanpa.arrivillaga 提供链接)。

现在很清楚为什么 int(5e+17-1) == 5e+17True

这可以通过使用 Decimal 来解决但一定要用字符串初始化它:

from decimal import Decimal

Decimal('5e+17') - 1 == Decimal('5e+17')

# False

关于python - 为什么在 Python 3.7 中 int(x-1) == x True 有一些 x 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55030614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com