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

2020/10/16 04:21 · javascript ·  · 0评论

我需要一个log用于JavaScript函数,但它必须以10为基础。我看不到任何相关信息,因此,我假设这是不可能的。是否有任何数学向导对此有解决方案?

“基础更改”公式/标识

可以以以下等式计算以10为底的对数的数值。

以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);
}

很简单,只需除以log(10)即可更改基数。甚至还有一个常量可以帮助您

Math.log(num) / Math.LN10;

与以下内容相同:

Math.log(num) / 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.log(10)/Math.LN10
1

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

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

> Math.log(10000)/Math.LN10
4
const logBase = (n, base) => Math.log(n) / Math.log(base);

https://zh.wikipedia.org/wiki/Logarithm#Change_of_base

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

那你可以做

Math.log10(your_number);

注意:最初我想这样Math.prototype.log10 = ...做,但是CMS用户指出Math不能以这种方式工作,因此我编辑了该.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,和Math.log10(x)一直以来2015年的标准在所有浏览器*

*除IE外,如果由于某种原因对您很重要。

如果您有一个数字x,则使用Math.log(x)本质上就是lnx。

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

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

对于基体10使用Math.log10()

请参阅以下文档:https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/log10

本文地址:http://javascript.askforanswer.com/ruhezaijavascriptzhongzhidingmath-logdejichu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!