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 を計算結果に設定しています。1.04 の代わりに、次のループのベースとしてその x を使用します。したがって、値はすぐに非常に大きくなります。

結果が大きくなりすぎる前の x の値は次のとおりです。

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