2015-10-13 45 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