2013-07-19 3 views
1

Python 2.5 на OSXPython OverflowError цикл: (34, 'Результат слишком велик')

Я получил OverflowError: (34, 'Результат слишком велик') для следующего кода:

x = 1.04 
for i in range(2, 101): 
    x += x**i 
print x 

Поэтому вместо этого я использовал код ниже; ошибка не была создана.

x = 0 
for i in range(1, 101): 
    x += 1.04**i 
print x 

Результат: 1287.12865279, и это кажется милями от максимального поплавка. Если мне нужно использовать другой тип для обработки этого вычисления с плавающей точкой, почему последний код работает, а первый - нет? Я озадачен ..... Любая помощь и объяснение при разрешении ошибки будут высоко оценены.

ответ

2

В первом примере вы устанавливаете x в результате своих вычислений. Вы используете этот x как основу следующего цикла, а не 1.04. Таким образом, значения очень скоро становятся очень большими.

Перед тем как результат становится слишком большим, х имеет следующие значения:

2.1216 
11.6713174057 
18567.4643593 
2.2068000989e+21 
1.15498932026e+128 
+0

Да, конечно! dunno, что задумалось иначе ... – pythoner

Смежные вопросы