Math.log1p()
Статичний метод Math.log1p() повертає натуральний логарифм (логарифм за основою e) числа 1 + x, де x – аргумент методу. Тобто:
Спробуйте його в дії
Синтаксис
Math.log1p(x)
Параметри
xЧисло, більше або рівне -1.
Повернене значення
Натуральний логарифм (логарифм за основою e) числа x + 1. Якщо 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()
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
Специфікації
Сумісність із браузерами
| desktop | mobile | server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
log1p
|
Chrome Full support 38 | Edge Full support 12 | Firefox Full support 25 | Internet Explorer No support Ні | Opera Full support 25 | Safari Full support 8 | WebView Android Full support 38 | Chrome Android Full support 38 | Firefox for Android Full support 25 | Opera Android Full support 25 | Safari on iOS Full support 8 | Samsung Internet Full support 3.0 | Deno Full support 1.0 | Node.js Full support 0.12.0 |