gpt4 book ai didi

python - 楼层划分//vs int() 四舍五入

转载 作者:行者123 更新时间:2023-11-28 20:01:03 24 4
gpt4 key购买 nike

我是 Python 3.6.0 的新用户。我正在尝试除以产生大输出的 2 个数字。然而,使用

return ans1 // ans2

使用时产生 55347740058143507128

return int(ans1 / ans2)

产生 55347740058143506432。

哪个更准确,为什么会这样?

最佳答案

第一个更准确,因为它给出了精确的整数结果。

第二个将中间结果表示为 float 。 float 的分辨率有限 ( 53 bits of mantissa ) 而结果需要 66 位才能准确表示。这会导致准确性下降。

如果我们查看两个结果的十六进制表示:

>>> hex(55347740058143507128)
'0x3001aac56864d42b8L'
>>> hex(55347740058143506432)
'0x3001aac56864d4000L'

我们可以看到结果中不适合 53 位尾数的最低有效位全部设置为零。

直接查看舍入的一种方法,没有除法带来的任何复杂情况是:

>>> int(float(55347740058143507128))
55347740058143506432L

关于python - 楼层划分//vs int() 四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231739/

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