I have these two small programs:
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,然后可能会出现错误。我猜测第二个循环将永远继续,因为浮点数可以存储比int更多的信息。
我的猜测完全错误。第一个程序似乎永远执行,而第二个程序在x达到大约10 ^ 308时退出循环并打印“Done” - 这是当x取inf(可能无限)时的情况。
我不明白这是如何工作的,任何解释都将不胜感激。谢谢!
BigInteger
类即可。 - Christian Deansys.float_info
会告诉你有关你所在平台上浮点数的实现方式。 - chepner