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.

Math.expm1() は静的メソッドで、 e のある数値のべき乗から 1 を引いた値を返します。

𝙼𝚊𝚝𝚑.𝚎𝚡𝚙𝚖𝟷(𝚡)=ex1\mathtt{\operatorname{Math.expm1}(x)} = \mathrm{e}^x - 1

試してみましょう

console.log(Math.expm1(0));
// Expected output: 0

console.log(Math.expm1(1));
// Expected output: 1.718281828459045

console.log(Math.expm1(-1));
// Expected output: -0.6321205588285577

console.log(Math.expm1(2));
// Expected output: 6.38905609893065

構文

js
Math.expm1(x)

引数

x

数値です。

返値

ex - 1 を表す数値で、 e は自然対数の底です。

解説

x の値が非常に小さい場合、1 を加えることで精度が縮小したり、なくなったりすることがあります。 JS で使用する倍精度浮動小数点数では、約 15 桁の精度が得られます。 1 + 1e-15 = 1.000000000000001ですが、1 + 1e-16 = 1.000000000000000となり、 15 桁以降の数字は丸められるため、この演算ではちょうど 1.0 となります。

ex\mathrm{e}^x を計算する場合、ここで x が 0 にとても近い場合、 1 + x にとても近い答えが得られるはずです。それは、 limx0ex1x=1\lim_{x \to 0} \frac{\mathrm{e}^x - 1}{x} = 1 だからです。 Math.exp(1.1111111111e-15) - 1 を計算すると、 1.1111111111e-15 に近い答えが得られます。代わりに、 Math.exp の結果の有効数字が最も大きい数字であるため、単位桁は 1 となり、最終的な値は 1.1102230246251565e-15 となり、正しい数字は 3 桁だけとなります。 Math.exp1m(1.1111111111e-15) の代わりに計算すると、より正確な答え 1.1111111111000007e-15 が得られます。これは 11 桁の有効数字になります。

expm1()Math の静的メソッドであるため、生成した Math オブジェクトのメソッドとしてではなく、常に Math.expm1() として使用するようにしてください (Math はコンストラクターではありません)。

Math.expm1() の使用

js
Math.expm1(-Infinity); // -1
Math.expm1(-1); // -0.6321205588285577
Math.expm1(-0); // -0
Math.expm1(0); // 0
Math.expm1(1); // 1.718281828459045
Math.expm1(Infinity); // 無限大

仕様書

Specification
ECMAScript® 2025 Language Specification
# sec-math.expm1

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
expm1

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報