Ik krijg een overloopfout wanneer ik deze berekening probeer, maar ik kan niet achterhalen waarom.
1-math.exp(-4*1000000*-0.0641515994108)
Antwoord 1, autoriteit 100%
Het getal dat u math.exp laat berekenen, heeft, in decimalen, meer dan 110.000 cijfers. Dat is iets buiten het bereik van een double, dus het veroorzaakt een overflow.
Antwoord 2, autoriteit 71%
Gebruik om het te repareren:
try:
ans = math.exp(200000)
except OverflowError:
ans = float('inf')
Antwoord 3, autoriteit 15%
Ik denk dat de waarde te groot wordt om in een double
in python te passen, daarom krijg je de OverflowError
. De grootste waarde die ik de exp
van op mijn machine in Python kan berekenen, is net iets groter dan 709.78271.
Antwoord 4, autoriteit 9%
Dit geeft je misschien een idee waarom:
http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29
Let op de 111442 exponent.
Antwoord 5, autoriteit 6%
Helaas heeft niemand uitgelegd wat de echte oplossing was. Ik heb het probleem opgelost met:
van mpmath import *
U kunt de documentatie hieronder vinden:
Antwoord 6, autoriteit 3%
Probeer np.exp() in plaats van math.exp()
Numpy behandelt overflows eleganter, np.exp(999) resulteert in inf
en 1. / (1. + np.exp(999)) resulteert daarom gewoon in nul
import math
import numpy as np
print(1-np.exp(-4*1000000*-0.0641515994108))