web-dev-qa-db-ja.com

Python:OverflowError:数学範囲エラー

この計算を試みるとオーバーフローエラーが発生しますが、その理由はわかりません。

1-math.exp(-4*1000000*-0.0641515994108)
23
Harpal

Math.expに計算を依頼する数値は、10進数で110,000桁を超えています。これはdoubleの範囲のわずかに外側にあるため、オーバーフローが発生します。

20
Glenn Maynard

それを修正するには:

try:
    ans = math.exp(200000)
except OverflowError:
    ans = float('inf')
17
Vatsal

値が大きすぎてpythonのdoubleに収まらないので、OverflowErrorを取得する理由です。 Pythonでマシン上のexpを計算できる最大値は、709.78271よりわずかに大きいだけです。

4
MAK

これにより、次の理由がわかります。

http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29

111442指数に注意してください。

3
Alin Purcaru