Math.log1p()
Функція Math.log1p()
повертає натуральний логарифм (за основою e
) від результату виразу 1 + дане число
. Тобто
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій https://github.com/mdn/interactive-examples та пришліть нам pull request.
Синтаксис
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);
};
Специфікації
Підтримка у браузерах
BCD tables only load in the browser
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.