我需要一个JavaScript日志函数,但它需要以10为基数。我看不到任何关于这个的列表,所以我假设这是不可能的。有没有数学奇才知道这个问题的答案?


当前回答

“改变基础”公式/单位

以10为底的对数的数值可以计算出来 用下面的标识。


由于Math.log(x)在JavaScript中返回x的自然对数(与ln(x)相同),对于以10为底的基数,您可以除以Math.log(10)(与ln(10)相同):

function log10(val) {
  return Math.log(val) / Math.LN10;
}

数学。LN10是Math.log(10)的内置预计算常数,因此这个函数本质上与:

function log10(val) {
  return Math.log(val) / Math.log(10);
}

其他回答

const logBase = (n, base) => Math.log(n) / Math.log(base);

https://en.wikipedia.org/wiki/Logarithm#Change_of_base

“改变基础”公式/单位

以10为底的对数的数值可以计算出来 用下面的标识。


由于Math.log(x)在JavaScript中返回x的自然对数(与ln(x)相同),对于以10为底的基数,您可以除以Math.log(10)(与ln(10)相同):

function log10(val) {
  return Math.log(val) / Math.LN10;
}

数学。LN10是Math.log(10)的内置预计算常数,因此这个函数本质上与:

function log10(val) {
  return Math.log(val) / Math.log(10);
}

很简单,只要改变底数除以log(10)就可以了。甚至有一个常数来帮助你

Math.log(num) / Math.LN10;

也就是:

Math.log(num) / Math.log(10);
Math.log10 = function(n) {
    return (Math.log(n)) / (Math.log(10));
}

然后你就可以

Math.log10(your_number);

注:最初我想做Math.prototype。Log10 =…但是用户CMS指出Math不是这样工作的,所以我编辑掉了.prototype部分。

FF 25+支持数学。log10方法。您可以使用polyfill:

if (!Math.log10) Math.log10 = function(t){ return Math.log(t)/Math.LN10; };

MDN列出了支持的浏览器。

桌面浏览器 Chrome Firefox (Gecko) Internet Explorer Opera Safari 38 25(25)不支持 移动浏览器 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile 不支持不支持25.0(25)不支持iOS 8