Math.log1p()

Функція Math.log1p() повертає натуральний логарифм (за основою e) значення 1 + число, а саме:

x > - 1 , Math.log1p ( x ) = ln ( 1 + x ) \forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

Спробуйте його в дії

Синтаксис

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
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
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

Дивіться також