Skip to main content
 首页 » 编程设计

python之为什么这个 While 循环会终止

2025年05月04日9www_RR

x=1.0 
i=1 
while(1.0+x>1.0): 
    x=x/2 
    i=i+1 
print i 

跟进问题,为什么i=54的值?

我的想法是循环不会结束,因为 (1.0+x) 的值将始终保持大于 1.0。但运行代码时,情况并非如此。

请您参考如下方法:

由于 inaccuracy of floating point ,总会有一段时间 x 的值太小以至于 Python 无法存储它的值,它实际上变成了 0。到达那个阶段需要 54 次迭代 ( 53, actually ),这就是 i 为 54 的原因。

例如,

>>> 1e-1000 
0.0