Python:OverflowError:数学范围错误

时间:2010-10-29 10:15:16

标签: python math overflow

我在尝试此计算时遇到溢出错误,但我无法弄清楚原因。

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

6 个答案:

答案 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)

不幸的是,没有人解释真正的解决方案是什么。我使用以下方法解决了这个问题:

从mpmath导入*

您可以在下面找到文档:

http://mpmath.org/

答案 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))