Math.log1p()
Функція Math.log1p()
повертає натуральний логарифм (за основою e
) значення 1 + число
, а саме:
Спробуйте його в дії
Синтаксис
Math.log1p(x)
Параметри
x
Число.
Повернене значення
Натуральний логарифм (за основою e
) від 1, доданої до переданого числа. Якщо число менше за -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(1); // 0.6931471805599453
Math.log1p(0); // 0
Math.log1p(-1); // -Infinity
Math.log1p(-2); // NaN
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
log1p
|
Chrome Full support 38 | Edge Full support 12 | Firefox Full support 25 | Internet Explorer No support No | 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 |
Дивіться також
- Поліфіл для
Math.log1p
доступний уcore-js
Math.exp()
Math.log()
Math.expm1()
Math.log10()
Math.log2()
Math.pow()