RangeError: BigInt negative exponent
BigInt is raised to the power of a negative BigInt value.
RangeError: Exponent must be positive (V8-based) RangeError: BigInt negative exponent (Firefox) RangeError: Negative exponent is not allowed (Safari)
What went wrong?
The exponent of an exponentiation operation must be positive. Since negative exponents would take the reciprocal of the base, the result will be between -1 and 1 in almost all cases, which gets rounded to
0n. To catch mistakes, negative exponents are not allowed. Check if the exponent is non-negative before doing exponentiation.
Using a negative BigInt as exponent
const a = 1n; const b = -1n; const c = a ** b; // RangeError: BigInt negative exponent
Instead, check if the exponent is negative first, and either issue an error with a better message, or fallback to a different value, like
const a = 1n; const b = -1n; const quotient = b >= 0n ? a ** b : 0n;