2015-10-13 85 views
0

我正在练习python并试图找到可以通过python显示的因子2的最大浮点数。系数为2的最大浮点数

我试过下面的代码,但是它没有运行。任何人都可以建议错误在哪里?

a=2. 
b=1. 
infinity = float("inf") 
while a < infinity: 
    b=a*2. 
    if b > infinity: 
     break 
    if b < infinity: 
     a=b*2. 
    if a > infinity: 
     break 

if a < infinity: 
    print a 
elif b < infinity: 
    print b 
+0

有标记为CPU *上没地方就在于无限*。你正在分化一个分歧的序列。相反,请检查'sys.maxsize' – percusse

+0

介意你,你不需要循环'sys.float_info [0]'给你最高的浮点数。这是一个偶数。 – Pynchia

+0

是的,但'sys.float_info [0]'是两个幂的?我期望最大浮动为'2 ^(some_large_number)* 1.1111 ... 11b',所以它会成为一个完美的力量。 (虽然它可能并不重要,它是两个的权力,取决于OP是否真的意味着“有两个因子”或实际上意味着“仅有两个因子”) – Kevin

回答

4

没有数字大于无穷大,所以if b > infinity:永远不会是真的。尝试将其更改为if b == infinity:,并且您的程序将根据需要终止。


此外,您还可以简化您的脚本有点如果你只使用一个变量:

a = 1.0 
while True: 
    if a*2 == float("inf"): 
     break 
    a *= 2 
print a