Answers:
“基础更改”公式/标识
以10为底的对数的数值可以用以下标识计算。
由于Math.log(x)
在JavaScript中返回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);
}
return Math.log(n) / Math.log(base);
这里的答案将导致明显的精度问题,并且在某些用例中不可靠
> 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
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
const logBase = (n, base) => Math.log(n) / Math.log(base);
Math.log10 = function(n) {
return (Math.log(n)) / (Math.log(10));
}
那你可以做
Math.log10(your_number);
注意:最初我想这样Math.prototype.log10 = ...
做,但是CMS用户指出Math不能以这种方式工作,因此我编辑了该.prototype
零件。
.prototype
零件;)
FF 25+支持一种Math.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) 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
Math.log10(x)
!😁
最佳答案对于任意基数都可以,但问题是关于对数基数10,自2015年以来Math.log10(x)
一直是所有浏览器的标准配置。 *
* 除IE外,如果由于某种原因对您很重要。
适用于基数10 Math.log10()
。
请参阅以下文档:https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/log10