Viene visualizzato un errore di overflow quando provo questo calcolo, ma non riesco a capire perché.Python: OverflowError: errore intervallo matematico
1-math.exp(-4*1000000*-0.0641515994108)
Viene visualizzato un errore di overflow quando provo questo calcolo, ma non riesco a capire perché.Python: OverflowError: errore intervallo matematico
1-math.exp(-4*1000000*-0.0641515994108)
Il numero che si desidera calcolare in math.exp ha, in decimale, oltre 110.000 cifre. Questo è leggermente al di fuori del range di un double, quindi provoca un overflow.
C'è una soluzione? –
Questo può darvi un indizio perché:
http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29
Avviso del 111442 esponente.
Penso che il valore diventi troppo grande per rientrare in un double
in python ed è per questo che si ottiene il OverflowError
. Il più grande valore che posso calcolare su exp
sulla mia macchina in Python è appena più grande di 709.78271.
Per risolvere il problema utilizzare:
try:
ans = math.exp(200000)
except OverflowError:
ans = float('inf')
Sta prendendo sempre per calcolare la math.exp della vostra espressione in linux 'calc' - in realtà circa 3 minuti sul mio PC. L'uscita non si adatta sullo schermo, ma qui è l'ultima parte di esso: 72601064848030549330052235283692208900018564830019400961030549300613573049038658490326003709885716700599883485335384987825755170505520081515667880006364976728119694600659746416440802282624919298297947165561974790549306225384099033699937030324423057761382164874383992786304290520859618809208146480637711575173287535774531529104427355177803053295844887694582338200906830029698966101673406039727344889895537434766431106 – kovshenin