我在尝试此计算时遇到溢出错误,但我无法弄清楚原因。
1-math.exp(-4*1000000*-0.0641515994108)
答案 0 :(得分:20)
您要求math.exp计算的数字,以十进制表示,超过110,000位。这略微超出了双倍范围,因此导致溢出。
答案 1 :(得分:17)
要修复它,请使用:
try:
ans = math.exp(200000)
except OverflowError:
ans = float('inf')
答案 2 :(得分:4)
我认为值太大而无法融入python中的double
,这就是为什么你得到OverflowError
。我可以用Python计算我机器上exp
的最大值,只是大于709.78271。
答案 3 :(得分:3)
这可能会给你一个线索的原因:
http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29
注意111442指数。
答案 4 :(得分:2)
答案 5 :(得分:0)
尝试使用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))