Math.expm1()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
TheMath.expm1() static method returnse raised to the power of a number, subtracted by 1. That is
In this article
Try it
console.log(Math.expm1(0));// Expected output: 0console.log(Math.expm1(1));// Expected output: 1.718281828459045console.log(Math.expm1(-1));// Expected output: -0.6321205588285577console.log(Math.expm1(2));// Expected output: 6.38905609893065Syntax
Math.expm1(x)Parameters
xA number.
Return value
A number representing ex - 1, where e isthe base of the natural logarithm.
Description
For very small values ofx, adding 1 can reduce or eliminate precision. The double floats used in JS give you about 15 digits of precision. 1 + 1e-15 = 1.000000000000001, but 1 + 1e-16 = 1.000000000000000 and therefore exactly 1.0 in that arithmetic, because digits past 15 are rounded off.
When you calculate, where x is a number very close to 0, you should get an answer very close to 1 + x because:. If you calculateMath.exp(1.1111111111e-15) - 1, you should get an answer close to1.1111111111e-15. Instead, due to the highest significant figure in the result ofMath.exp being the units digit1, the final value ends up being1.1102230246251565e-15, with only 3 correct digits. If you calculateMath.expm1(1.1111111111e-15) instead, you will get a much more accurate answer,1.1111111111000007e-15, with 11 correct digits of precision.
Becauseexpm1() is a static method ofMath, you always use it asMath.expm1(), rather than as a method of aMath object you created (Math is not a constructor).
Examples
>Using Math.expm1()
Math.expm1(-Infinity); // -1Math.expm1(-1); // -0.6321205588285577Math.expm1(-0); // -0Math.expm1(0); // 0Math.expm1(1); // 1.718281828459045Math.expm1(Infinity); // InfinitySpecifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-math.expm1> |