2015-10-13 3 views
0

Я занимаюсь питоном и пытаюсь найти самое большое число с плавающей запятой с коэффициентом 2, которое может отображаться на python.Наибольшее число с плавающей запятой с коэффициентом 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]' сила двух? Я ожидал бы, что max float будет '2^(some_large_number) * 1.1111 ... 11b', так что это был бы недостаток волос, чтобы быть идеальной силой. (хотя, возможно, не имеет значения, что это сила двух, в зависимости от того, действительно ли ОП означает «с коэффициентом два» или фактически означает «с единственными факторами из двух») – Kevin

ответ

4

Существует не число больше, чем бесконечность, так if b > infinity: никогда не будет True. Попробуйте изменить его на if b == infinity:, и ваша программа завершится по желанию.


Кроме того, вы можете упростить ваш сценарий несколько, если вы используете только одну переменную:

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