math range error

Python Erreur courante

Explication

L'erreur `OverflowError: math range error` survient quand le **résultat d'un calcul flottant dépasse** ce qu'un `float` peut représenter — par exemple `math.exp` d'un grand nombre. À noter : les **entiers Python sont de précision illimitée** (ils ne débordent jamais) ; seuls les flottants et les fonctions de `math` débordent. ```python import math math.exp(1000) # résultat astronomique, hors limites du float # OverflowError: math range error ```

Causes courantes

- **`math.exp` / `math.pow`** appliqués à de grandes valeurs. - **Calcul flottant** produisant un nombre gigantesque. - **Factorielle via des flottants** au lieu d'entiers.

1. Travaillez dans l'espace logarithmique

Au lieu de manipuler de très grands nombres, raisonnez sur leur logarithme :

import math
log_resultat = 1000   # = math.log(math.exp(1000)), sans déborder

2. Utilisez des entiers pour les très grands nombres exacts

Les entiers Python n'ont pas de limite :

import math
print(math.factorial(1000))   # entier énorme, mais exact, pas d'overflow

3. Bornez ou validez les entrées

import math
if x < 700:                 # math.exp(709) est environ le maximum
    y = math.exp(x)
else:
    y = float("inf")        # ou traiter le cas extrême

Comment prevenir cette erreur

- **Bornez les valeurs** passées aux fonctions exponentielles. - **Raisonnez en logarithmes** pour les probabilités et produits de grands nombres. - Pour l'exactitude sur de grands entiers, restez dans le type `int` (illimité). - Référence : [docs.python.org — OverflowError](https://docs.python.org/fr/3/library/exceptions.html#OverflowError).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Pourquoi les entiers Python ne débordent-ils pas, mais les flottants si ?
Parce que les `int` Python sont de précision arbitraire : ils grandissent autant que la mémoire le permet. Les `float` suivent la norme IEEE 754 (64 bits) et ont une valeur maximale (~1.8e308) au-delà de laquelle ils débordent.
Comment éviter l'overflow sur des produits de probabilités ?
Additionnez les logarithmes au lieu de multiplier les probabilités : `somme = sum(math.log(p) for p in probas)`. C'est la technique standard en statistiques pour éviter les débordements.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.