web-dev-qa-db-fra.com

Python: OverflowError: erreur de plage mathématique

Je reçois une erreur de débordement lorsque j'essaie ce calcul, mais je n'arrive pas à comprendre pourquoi.

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

Le nombre que vous demandez à math.exp de calculer a, en décimal, plus de 110 000 chiffres. C'est légèrement en dehors de la plage d'un double, donc cela provoque un débordement.

20
Glenn Maynard

Pour le réparer, utilisez:

try:
    ans = math.exp(200000)
except OverflowError:
    ans = float('inf')
17
Vatsal

Je pense que la valeur devient trop grande pour tenir dans un double dans python c'est pourquoi vous obtenez le OverflowError. La plus grande valeur que je peux calculer le exp of sur ma machine en Python est juste légèrement plus grand que 709.78271.

4
MAK

Cela peut vous donner une idée pourquoi:

http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29

Remarquez l'exposant 111442.

3
Alin Purcaru