2017-03-01 96 views
2

当我尝试这样计算我得到一个溢出错误,的Python OverflowError:数学范围错误

output=math.exp(1391.12694245)*100 

我知道这是因为所使用的号码是“双重的范围之外”。 但有没有解决这个问题并获得输出值的方法。 有人可以帮忙吗?

+0

它的无穷价值RYT .. – Edison

+0

http://stackoverflow.com/a/16905023/478656 - 使用'十进制小数进口;十进制(1391.12694245).exp()* 100' – TessellatingHeckler

+0

您可以提供更多关于您试图解决的问题的信息吗?正常的“浮点”范围对于大多数现实世界的任务来说已经足够了,并且使用扩展精度通常是错误的解决方案 - 可能只是需要重新计算以避免溢出。 –

回答

1

使用额外的精度浮点数从numpy的:

import numpy as np 
np.exp(np.array([1391.12694245],dtype=np.float128))*100 
# array([ 1.4413011e+606], dtype=float128) 
+0

谢谢..但是np.array在这里有什么用处 –

+1

这是平台特定的:'float128'在所有平台上都不可用(并且通常不是128位浮点类型,即使它*是* 当下)。 –