Math.log()
Math.log() 静态方法返回一个数字的自然对数(以 e 为底)。也就是说,对于所有大于 0 的 x,Math.log(x) 等于 ln(x),即满足 e^y = x 的唯一 y。
试一试
function getBaseLog(x, y) {
return Math.log(y) / Math.log(x);
}
// 2 x 2 x 2 = 8
console.log(getBaseLog(2, 8));
// Expected output: 3
// 5 x 5 x 5 x 5 = 625
console.log(getBaseLog(5, 625));
// Expected output: 4
语法
js
Math.log(x)
参数
x-
大于或等于 0 的数字。
返回值
描述
由于 log() 是 Math 的一个静态方法,您总是使用 Math.log() 来调用它,而不是作为您创建的 Math 对象的某个方法(Math 不是一个构造函数)。
如果您需要 2 或 10 的自然对数,可以使用常量 Math.LN2 或 Math.LN10。如果您需要以 2 或 10 为底的对数,请使用 Math.log2() 或 Math.log10()。如果您需要以其他底数为底的对数,请使用 Math.log(x) / Math.log(otherBase),如以下示例所示;您可能希望预先计算 1 / Math.log(otherBase),因为在 Math.log(x) * constant 中进行乘法运算要快得多。
请注意,非常接近 1 的正数可能会由于精度损失而导致其自然对数不够精确。在这种情况下,您可能需要改用 Math.log1p。
示例
使用 Math.log()
js
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()
以下函数返回 y 以 x 为底的对数(即,):
js
function getBaseLog(x, y) {
return Math.log(y) / Math.log(x);
}
如果您运行 getBaseLog(10, 1000),由于浮点数舍入,它将返回 2.9999999999999996,但仍然非常接近实际答案 3。
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-math.log |
浏览器兼容性
加载中…