gpt4 book ai didi

python - 在(看似)无限循环中耗尽浮点精度

转载 作者:太空狗 更新时间:2023-10-30 01:40:49 25 4
gpt4 key购买 nike

我有以下 Python 脚本:

x = 300000000.0
while (x < x + x):
x = x + x
print "exec: " + str(x)
print "terminated" + str(x)

如果 x 是 float ,这个看似无限的循环会很快终止。但是,如果我将 x 更改为 300000000,它将进入无限循环(在我的测试中运行时间超过一分钟)。

我认为这是因为它耗尽了可以在内存中表示的 float 的精度。有人可以提供更详细的解释吗?

最佳答案

  • 当您将 x 初始化为 300000000 时,整个程序都会使用整数数学。
  • 当您将 x 初始化为 300000000.0 时,将改用 float 学。

在 Python 中,整数可以增长到任意大。 (更准确地说,它们受到可用内存的限制。)这意味着您的程序的整数版本需要很长时间才能终止。

最大的 float 大约是 1.8e308。循环的浮点版本需要大约 1000 次迭代才能超过该值,此时 x 被设置为正无穷大,程序终止。

关于python - 在(看似)无限循环中耗尽浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414992/

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