如何在JavaScript中指定Math.log()的基础?

时间:2010-06-10 23:30:56

标签: javascript math logarithm

我需要JavaScript的log函数,但它需要是10的基础。我看不到任何列表,所以我假设它不可能。是否有任何数学向导知道解决方案?

10 个答案:

答案 0 :(得分:311)

“基础变更”公式/标识

  

可以计算对数10的对数的数值   具有以下身份。

Logarithm for base 10


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

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

Math.LN10Math.log(10)的内置预计算常量,因此该函数基本上与以下内容相同:

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

答案 1 :(得分:63)

简单,只需通过除以日志(10)来更改基数。甚至有一个常数来帮助你

Math.log(num) / Math.LN10;

与:

相同
Math.log(num) / Math.log(10);

答案 2 :(得分:49)

您可以简单地除以值的对数和所需基数的对数,也可以覆盖Math.log方法以接受可选的基本参数:

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

Math.log(5, 10);

答案 3 :(得分:15)

这里的答案会导致明显的精度问题,并且在某些用例中不可靠

> Math.log(10)/Math.LN10
1

> Math.log(100)/Math.LN10
2

> Math.log(1000)/Math.LN10
2.9999999999999996

> Math.log(10000)/Math.LN10
4

答案 4 :(得分:12)

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

然后你可以做

Math.log10(your_number);

注意:最初我想Math.prototype.log10 = ...执行此操作,但是用户CMS指出Math不会这样做,所以我编辑了{ {1}}部分。

答案 5 :(得分:11)

Math.logBase = function(n, base) {
    return Math.log(n) / Math.log(base);
};

答案 6 :(得分:9)

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

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

MDN列出supported browsers

  

桌面浏览器

     
Chrome    Firefox (Gecko) Internet Explorer   Opera   Safari
38        25 (25)         Not supported       25      7.1
     

移动浏览器

     
Android         Chrome for Android    Firefox Mobile (Gecko)  IE Mobile      Opera Mobile    Safari Mobile
Not supported   Not supported         25.0 (25)               Not supported  Not supported   iOS 8

答案 7 :(得分:0)

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

要将其转换为e以外的基础,您可以使用以下功能:

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

答案 8 :(得分:0)

Math.log10(x)! ?

对于任意基数,最高答案是正确的,但是问题是关于对数基数10,并且Math.log10(x)已经是standard across all browsers since 2015. *

* 除了IE之外,如果出于某些原因对您来说很重要。

答案 9 :(得分:0)

对于基数10,请使用Math.log10()

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