Met*_*uru 198 javascript math logarithm
我需要一个log
JavaScript函数,但它需要是基数10.我看不到任何列表,所以我假设它不可能.是否有任何数学向导知道这个解决方案?
Pet*_*ter 319
"基础变化"公式/身份
可以用以下标识计算对数10的对数的数值.
因为Math.log(x)
在JavaScript中返回的自然对数x
(与ln(x)相同),对于基数10,你可以除以Math.log(10)
(与ln(10)相同):
function log10(val) {
return Math.log(val) / Math.LN10;
}
Run Code Online (Sandbox Code Playgroud)
Math.LN10
是一个内置的预计算常量Math.log(10)
,所以这个函数基本上与:
function log10(val) {
return Math.log(val) / Math.log(10);
}
Run Code Online (Sandbox Code Playgroud)
bra*_*amp 64
简单,只需通过除以日志(10)来改变基数.甚至有一个常数来帮助你
Math.log(num) / Math.LN10;
Run Code Online (Sandbox Code Playgroud)
这与:
Math.log(num) / Math.log(10);
Run Code Online (Sandbox Code Playgroud)
CMS*_*CMS 51
您可以简单地除以值的对数和所需基数的对数,也可以覆盖Math.log
方法以接受可选的基本参数:
Math.log = (function() {
var log = Math.log;
return function(n, base) {
return log(n)/(base ? log(base) : 1);
};
})();
Math.log(5, 10);
Run Code Online (Sandbox Code Playgroud)
Roy*_*hao 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
Run Code Online (Sandbox Code Playgroud)
art*_*ung 13
Math.log10 = function(n) {
return (Math.log(n)) / (Math.log(10));
}
Run Code Online (Sandbox Code Playgroud)
那你可以做
Math.log10(your_number);
Run Code Online (Sandbox Code Playgroud)
注意:最初我想这样Math.prototype.log10 = ...
做,但用户CMS指出Math不能这样工作,所以我编辑了.prototype
部分.
Yuk*_*élé 13
const logBase = (n, base) => Math.log(n) / Math.log(base);
Run Code Online (Sandbox Code Playgroud)
FF 25+支持一种Math.log10
方法.您可以使用polyfill:
if (!Math.log10) Math.log10 = function(t){ return Math.log(t)/Math.LN10; };
Run Code Online (Sandbox Code Playgroud)
MDN列出了支持的浏览器.
桌面浏览器
Run Code Online (Sandbox Code Playgroud)Chrome Firefox (Gecko) Internet Explorer Opera Safari 38 25 (25) Not supported 25 7.1
移动浏览器
Run Code Online (Sandbox Code Playgroud)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