Spec-Zone.ru › JavaScript

Math.log1p()

Базовая линия Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Math.log1p() возвращает натуральный логарифм (по основанию e) от 1 + x, где x — это аргумент. То есть:

∀x>−1,𝙼𝚊𝚝𝚑.𝚕𝚘𝚐𝟷𝚙(𝚡)=ln(1+x)\forall x > -1,\;\mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

Попробовать

console.log(Math.log1p(1));
// Expected output: 0.6931471805599453

console.log(Math.log1p(0));
// Expected output: 0

console.log(Math.log1p(-1));
// Expected output: -Infinity

console.log(Math.log1p(-2));
// Expected output: NaN

Синтаксис

Math.log1p(x)

Параметры

x
Число, большее или равное -1.

Возвращаемое значение

Натуральный логарифм (по основанию e) от x + 1. Если x равно -1, возвращается -Infinity. Если x < -1, возвращается NaN.

Описание

Для очень малых значений x добавление 1 может уменьшить или устранить точность. Числа двойной точности (double floats), используемые в JS, обеспечивают около 15 знаков точности. 1 + 1e-15 = 1.000000000000001, но 1 + 1e-16 = 1.000000000000000 и, следовательно, ровно 1.0 в этой арифметике, поскольку цифры после 15-го знака округляются.

Когда вы вычисляете log(1 + x), где x — небольшое положительное число, вы должны получить ответ, очень близкий к x, потому что: limx→0log⁡(1+x)x=1\lim_{x \to 0} \frac{\log(1+x)}{x} = 1. Если вы вычисляете 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

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

Спецификация
Спецификация языка ECMAScript® 2027
# sec-math.log1p

Совместимость с браузерами

Настольные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
log1p
38
12
25
25
8
38
25
25
8
3.0
38
8
1.0.0
1.0
0.12.0

Смотрите также

  • Полифил Math.log1p в core-js
  • Полифил es-shims для Math.log1p
  • Math.exp()
  • Math.log()
  • Math.expm1()
  • Math.log10()
  • Math.log2()
  • Math.pow()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API