math domain error

Python Erreur courante

Explication

L'erreur `ValueError: math domain error` survient quand vous appelez une fonction du module `math` avec une valeur **hors de son domaine de définition** : racine carrée d'un nombre négatif, logarithme de zéro ou d'un négatif, `acos`/`asin` hors de l'intervalle `[-1, 1]`. ```python import math math.sqrt(-4) # pas de racine carrée réelle d'un négatif # ValueError: math domain error ```

Causes courantes

- **`math.sqrt(x)`** avec `x < 0`. - **`math.log(x)`** avec `x <= 0`. - **`math.acos(x)` / `math.asin(x)`** avec `x` hors de `[-1, 1]`. - **Une valeur calculée** qui devient négative à cause d'arrondis ou de données.

1. Validez la valeur avant le calcul

import math
if x >= 0:
    r = math.sqrt(x)
else:
    r = None   # ou traiter le cas négatif

2. Utilisez cmath pour des résultats complexes

import cmath
print(cmath.sqrt(-4))   # 2j (nombre complexe)

3. Bornez les valeurs sensibles aux arrondis

Pour acos/asin, un calcul peut donner 1.0000001 : ramenez-le dans l'intervalle :

import math
x = max(-1.0, min(1.0, x))   # clamp dans [-1, 1]
angle = math.acos(x)

Comment prevenir cette erreur

- **Vérifiez le domaine** avant tout `sqrt`, `log`, `acos`, `asin`. - **Utilisez `cmath`** si des résultats complexes sont attendus. - **Encadrez** les calculs issus de données externes par une validation. - Référence : [docs.python.org — math](https://docs.python.org/fr/3/library/math.html).

Besoin d'aide sur votre projet ?

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

Nous contacter

Questions frequentes

Comment calculer la racine carrée d'un nombre négatif ?
`math` ne gère que les réels et lève l'erreur. Utilisez `cmath.sqrt(-4)` qui renvoie un nombre complexe (`2j`), ou validez en amont si vous n'attendez que des réels.
J'ai `acos(1.0000000001)` qui plante, pourquoi ?
Un arrondi a poussé la valeur juste au-dessus de 1, hors du domaine `[-1, 1]`. Ramenez-la dans l'intervalle avant l'appel : `x = max(-1.0, min(1.0, x))`.

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.