我需要JavaScript的log
函数,但它需要是10的基础。我看不到任何列表,所以我假设它不可能。是否有任何数学向导知道解决方案?
答案 0 :(得分:311)
“基础变更”公式/标识
可以计算对数10的对数的数值 具有以下身份。
由于JavaScript中的Math.log(x)
返回x
的自然对数(与 ln(x)相同),对于基数10,您可以除以Math.log(10)
(与 ln(10)相同:
function log10(val) {
return Math.log(val) / Math.LN10;
}
Math.LN10
是Math.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