1

osx上的python 2.5

对于以下代码,我得到了 OverflowError: (34, 'Result too large'):

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,这似乎距离最大浮动数英里。如果我需要使用不同的类型来处理这个浮点计算,为什么后面的代码可以工作而前面的代码不行?我很困惑.....任何有关解决错误的帮助和解释将不胜感激。

4

1 回答 1

2

在第一个示例中,您将 x 设置为计算结果。您使用该 x 作为下一个循环的基础,而不是 1.04。因此,这些值很快就会变得非常大。

在结果变得太大之前,x 具有以下值:

2.1216
11.6713174057
18567.4643593
2.2068000989e+21
1.15498932026e+128
于 2013-07-19T09:41:56.900 回答