Math.log()

基线 广泛可用

此功能已得到良好建立,并在许多设备和浏览器版本中有效。它自 2015 年 7 月.

报告反馈

The Math.log() 静态方法返回数字的自然对数(以 e 为底)。也就是说 > 0 , x ( 𝙼𝚊𝚝𝚑.𝚕𝚘𝚐 ) = 𝚡 ( ) = ln the unique  y  such that  the unique  = e

试一试

语法

\forall x > 0,\;\mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique } y \text{ such that } e^y = x
Math.log(x)

js

参数

大于或等于 0 的数字。

返回值

描述

x 的自然对数(以 e 为底)。如果 x 是 ±0,则返回 -Infinity。如果 x < 0,则返回 NaN

由于 log()Math 的静态方法,因此您始终将其用作 Math.log(),而不是用作您创建的 Math 对象的方法(Math 不是构造函数)。

如果您需要 2 或 10 的自然对数,请使用常量 Math.LN2Math.LN10。如果您需要以 2 或 10 为底的对数,请使用 Math.log2()Math.log10()。如果您需要以其他底数的对数,请使用 Math.log(x) / Math.log(otherBase),如下面的示例所示;您可能希望预先计算 1 / Math.log(otherBase),因为 Math.log(x) * constant 中的乘法速度要快得多。

示例

请注意,非常接近 1 的正数可能会因精度损失而导致其自然对数的精度降低。在这种情况下,您可能希望使用 Math.log1p

\forall x > 0,\;\mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique } y \text{ such that } e^y = x
Math.log(-1); // NaN
Math.log(-0); // -Infinity
Math.log(0); // -Infinity
Math.log(1); // 0
Math.log(10); // 2.302585092994046
Math.log(Infinity); // Infinity

使用 Math.log()

使用其他底数的 Math.log() 以下函数返回以 x 为底的 y 的对数(即 the unique  log ):

\forall x > 0,\;\mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique } y \text{ such that } e^y = x
function getBaseLog(x, y) {
  return Math.log(y) / Math.log(x);
}

\log_x y

规范

如果您运行 getBaseLog(10, 1000),它将返回 2.9999999999999996,这是由于浮点舍入造成的,但仍然非常接近实际答案 3。
规范
# ECMAScript 语言规范

浏览器兼容性

sec-math.log

另请参阅