python 2.5
我收到了以下代码的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,这似乎距最大浮点数几英里远。如果我需要使用不同的类型来处理这个浮点计算,为什么后一个代码工作而前一个代码不起作用?我很困惑.....非常感谢任何有关解决错误的帮助和解释。
答案 0 :(得分:2)
在第一个示例中,您将x设置为计算结果。您使用该x作为下一个循环的基础,而不是1.04。因此,这些价值很快就会变得很大。
在结果变得太大之前,x具有以下值:
2.1216
11.6713174057
18567.4643593
2.2068000989e+21
1.15498932026e+128