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
js
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
.
js
const a = 1n;
const b = -1n;
const quotient = b >= 0n ? a ** b : 0n;