Функція 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+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, із лише трьома значущими цифрами. Зате за допомогою 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

Поліфіл

Метод може бути відтворений за допомогою наступної функції:

Math.log1p = Math.log1p || function(x) {
  return Math.log(1 + x);
};

Специфікації

Специфікація Статус Примітка
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math.log1p' in that specification.
Standard Первинне визначення.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Math.log1p' in that specification.
Draft  

Підтримка у браузерах

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support 38Edge Full support YesFirefox Full support 25IE No support NoOpera Full support 25Safari Full support 8WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 25Opera Android Full support YesSafari iOS Full support 8Samsung Internet Android Full support Yesnodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

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

Мітки документа й учасники

Зробили внесок у цю сторінку: AdriandeCita
Востаннє оновлена: AdriandeCita,