2017-03-01 64 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位浮點類型,即使它*是* 當下)。 –