Math.log1p()
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Math.log1p() возвращает натуральный логарифм (по основанию e) от 1 + x, где x — это аргумент. То есть:
Попробовать
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
Синтаксис
Math.log1p(x)
Параметры
-
x - Число, большее или равное -1.
Возвращаемое значение
Натуральный логарифм (по основанию e) от x + 1. Если x равно -1, возвращается -Infinity. Если x < -1, возвращается NaN.
Описание
Для очень малых значений x добавление 1 может уменьшить или устранить точность. Числа двойной точности (double floats), используемые в 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()
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® 2027 # sec-math.log1p |
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
log1p |
38 |
12 |
25 |
25 |
8 |
38 |
25 |
25 |
8 |
3.0 |
38 |
8 |
1.0.0 |
1.0 |
0.12.0 |
Смотрите также
- Полифил
Math.log1pвcore-js - Полифил es-shims для
Math.log1p Math.exp()Math.log()Math.expm1()Math.log10()Math.log2()Math.pow()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p