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 を引いた値を返します。
試してみましょう
構文
Math.expm1(x)
引数
x
-
数値です。
返値
ex - 1 を表す数値で、 e は自然対数の底です。
解説
x の値が非常に小さい場合、1 を加えることで精度が縮小したり、なくなったりすることがあります。 JS で使用する倍精度浮動小数点数では、約 15 桁の精度が得られます。 1 + 1e-15 = 1.000000000000001ですが、1 + 1e-16 = 1.000000000000000となり、 15 桁以降の数字は丸められるため、この演算ではちょうど 1.0 となります。
を計算する場合、ここで x が 0 にとても近い場合、 1 + x にとても近い答えが得られるはずです。それは、
だからです。 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() の使用
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 Language Specification # sec-math.expm1 |
ブラウザーの互換性
BCD tables only load in the browser