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 |