Python:OverflowError:数学范围错误

Har*_*pal 27 python math overflow

我尝试这个计算时遇到溢出错误,但我无法弄清楚原因.

1-math.exp(-4*1000000*-0.0641515994108)
Run Code Online (Sandbox Code Playgroud)

Gle*_*ard 24

您要求math.exp计算的数字,以十进制表示,超过110,000位.这略微超出了双倍的范围,因此会导致溢出.

  • 有解决方案吗? (15认同)

Vat*_*sal 17

要修复它,请使用:

try:
    ans = math.exp(200000)
except OverflowError:
    ans = float('inf')
Run Code Online (Sandbox Code Playgroud)


MAK*_*MAK 5

我认为该值太大而无法放入doublepython 中,这就是为什么你得到OverflowError. 我可以exp在我的机器上用 Python计算的最大值略大于 709.78271。


小智 5

尝试 np.exp() 而不是 math.exp()

Numpy 更优雅地处理溢出,np.exp(999) 结果为 inf 和 1. / (1. + np.exp(999)) 因此简单地结果为零

import math 
import numpy as np

print(1-np.exp(-4*1000000*-0.0641515994108))
Run Code Online (Sandbox Code Playgroud)