試一試
console.log(Math.log1p(1));
// Expected output: 0.6931471805599453
console.log(Math.log1p(0));
// Expected output: 0
console.log(Math.log1p(-1));
// Expected output: -Infinity
console.log(Math.log1p(-2));
// Expected output: NaN
語法
js
Math.log1p(x)
引數
x-
一個大於或等於 -1 的數字。
返回值
x + 1 的自然對數(以 e 為底)。如果 x 是 -1,則返回 -Infinity。如果 x < -1,則返回 NaN。
描述
對於非常小的 x 值,加 1 可能會降低或消除精度。JS 中使用的雙精度浮點數提供了大約 15 位數字的精度。1 + 1e-15 = 1.000000000000001,但 1 + 1e-16 = 1.000000000000000,因此在該算術中恰好為 1.0,因為超過 15 位的數字會被四捨五入。
當您計算 log(1 + x) 時,其中 x 是一個小的正數,您應該得到一個非常接近 x 的答案,因為。如果您計算 Math.log(1 + 1.1111111111e-15),您應該得到一個接近 1.1111111111e-15 的答案。相反,您最終會計算 1.00000000000000111022(四捨五入是二進位制的,所以有時會很難看)的對數,得到 1.11022…e-15 的答案,只有 3 位數字是正確的。如果您改用 Math.log1p(1.1111111111e-15),您將獲得一個更精確的答案,1.1111111110999995e-15,具有 15 位數字的精度(在此情況下實際上是 16 位)。
如果 x 的值小於 -1,則返回值始終為 NaN。
由於 log1p() 是 Math 的靜態方法,您始終將其用作 Math.log1p(),而不是作為您建立的 Math 物件的某個方法(Math 不是一個建構函式)。
示例
使用 Math.log1p()
js
Math.log1p(-2); // NaN
Math.log1p(-1); // -Infinity
Math.log1p(-0); // -0
Math.log1p(0); // 0
Math.log1p(1); // 0.6931471805599453
Math.log1p(Infinity); // Infinity
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-math.log1p |
瀏覽器相容性
載入中…