gpt4 book ai didi

python - Python 中 int 和 float 的范围

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:05 26 4
gpt4 key购买 nike

我有这两个小程序:

1.

x = 1000

while (1000 * x != x):
x = 1000 * x

print("Done")

2.

x = 1000.0

while (1000.0 * x != x):
x = 1000.0 * x

print("Done")

我正在尝试对这些程序的执行方式做出有根据的猜测。我认为整数存储在 4 个字节(32 位)中,第一个程序将执行循环直到 x 达到 2^31 然后可能会给出错误。我猜第二个循环会一直持续下去,因为 float 可以存储比整数更多的信息。

我的猜测不可能再错了。第一个似乎永远持续下去,而第二个存在循环并在 x 达到大约 10^308 后打印“完成”——这是 x 取值 inf(可能是无限大)的时候。

我不明白这是如何工作的,任何解释将不胜感激。谢谢!

最佳答案

第一个整数示例将循环直到没有内存可用(在这种情况下进程将停止或机器将死掉):

x = 1000

while (1000 * x != x):
x = 1000 * x

因为整数在 python 中没有固定大小,它们只使用所有可用的内存(在进程地址范围内)。

在第二个例子中你乘以你的浮点值,它一个限制,因为它使用处理器浮点,8字节(python float通常使用C double 类型)

达到最大值后,它会溢出到 inf(无限),在这种情况下

1000 * inf == inf

小型互动演示:

>>> f = 10.0**308
>>> f*2
inf
>>> f*2 == f*1000
True
>>>

关于python - Python 中 int 和 float 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46547972/

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