Math.log1p()
基线 广泛可用
此功能非常成熟,并在许多设备和浏览器版本上都能正常运行。它自 2015 年 7 月.
报告反馈
尝试一下
语法
\forall x > -1,\;\mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)
Math.log1p(x)
js
∀
-
参数
大于或等于 -1 的数字。
返回值
描述
x + 1
的自然对数(以 e 为底)。如果 x
为 -1,则返回 -Infinity
。如果 x < -1
,则返回 NaN
。
对于非常小的 x 值,加 1 会降低或消除精度。JS 中使用的双精度浮点数提供大约 15 位的精度。1 + 1e-15 = 1.000000000000001,但 1 + 1e-16 = 1.000000000000000,因此在这个算术中正好为 1.0,因为超过 15 位的数字会被舍入。\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
不是构造函数)。
\forall x > -1,\;\mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)
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
规范
使用 Math.log1p() |
---|
规范 # ECMAScript 语言规范 |
浏览器兼容性
sec-math.log1p