RangeError: BigInt negative exponent
L'exception JavaScript "BigInt negative exponent" se produit lorsqu'une valeur BigInt
est élevée à une puissance négative exprimée avec une valeur BigInt
.
Message
RangeError: Exponent must be positive (moteur JavaScript basé sur V8) RangeError: BigInt negative exponent (Firefox) RangeError: Negative exponent is not allowed (Safari)
Type d'erreur
Quel est le problème ?
L'exposant utilisé pour une opération d'exponentiation doit être positif. Un exposant négatif conduirait à prendre un inverse de la base, le résultat sera alors compris entre -1
et 1
pour presque tous les cas, ce qui finirait arrondi en 0n
. Pour éviter de tels problèmes, les exposants négatifs ne sont pas autorisés. Vérifiez le signe de l'exposant avant de réaliser l'exponentiation.
Exemples
Utiliser un grand entier négatif comme exposant
const a = 1n;
const b = -1n;
const c = a ** b;
// RangeError: BigInt negative exponent
À la place, on vérifiera au préalable si l'exposant est négatif, si c'est le cas, on produira un message d'erreur plus spécifique ou on utilisera une valeur alternative comme 0n
ou undefined
.
const a = 1n;
const b = -1n;
const quotient = b >= 0n ? a ** b : 0n;