Python: OverflowError: math range error
117,301
Solution 1
The number you're asking math.exp to calculate has, in decimal, over 110,000 digits. That's slightly outside of the range of a double, so it causes an overflow.
Solution 2
To fix it use:
try:
ans = math.exp(200000)
except OverflowError:
ans = float('inf')
Solution 3
I think the value gets too large to fit into a double
in python which is why you get the OverflowError
. The largest value I can compute the exp
of on my machine in Python is just sligthly larger than 709.78271.
Solution 4
This may give you a clue why:
http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29
Notice the 111442 exponent.
Solution 5
Unfortunately, no one explained what the real solution was. I solved the problem using:
from mpmath import *
You can find the documentation below:
Comments
-
Harpal about 4 years
I get a Overflow error when i try this calculation, but i cant figure out why.
1-math.exp(-4*1000000*-0.0641515994108)
-
pyjavo over 2 yearsHere you can find the expo() method mpmath.org/doc/current/functions/powers.html#exponentiation