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


当前回答

如果你有一个数字x,那么Math.log(x)的使用本质上就是lnx。

要将它转换为e以外的基数,可以使用以下函数:

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

其他回答

你可以简单地除以你的值的对数,和你想要的底的对数,你也可以重写Math.log方法来接受一个可选的底参数:

Math.log = (function() {
  var log = Math.log;
  return function(n, base) {
    return log(n)/(base ? log(base) : 1);
  };
})();

Math.log(5, 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

以10为基数使用Math.log10()。

查看文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10

如果你有一个数字x,那么Math.log(x)的使用本质上就是lnx。

要将它转换为e以外的基数,可以使用以下函数:

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