如何在Javascript中执行不同的基本对数函数?

Aej*_*jay 5 javascript logarithm node.js

这个问题是在考虑node.js服务器时提出的,但是我将问题称为"javascript",因为我也可能将同样的逻辑用于客户端脚本.

这是问题所在:给定一组x值,y需要以对数方式进行缩放.Math对象执行自然log [ ln(x)],但不提供用于指定对数基数的接口.

对于一个具体的例子,我需要找到以下内容:

log[512](2)

哪个应该返回.1111~

但是,我没有看到允许我完成此操作的界面,我也无法找到公开日志基础选项的库.当然这是一个常见的问题并且有一个解决方案,但我的搜索只找到了解决不同/无关问题的方法.想法?

Pla*_*ure 15

您可以使用对数基数更改公式:

log[a](n) = log[b](n) / log[b](a)
Run Code Online (Sandbox Code Playgroud)

因此,为了获得log(2)base 512,请使用:

function log(b, n) {
    return Math.log(n) / Math.log(b);
}

alert(log(2, 512));
Run Code Online (Sandbox Code Playgroud)

注意Math.log上面使用了自然对数基数; 即,它将以ln数学方式编写.

  • javascript函数看起来像`function log(base,number){return Math.ln(number)/ Math.ln(base); }` (2认同)

小智 5

我今天在谷歌上找到了这个答案作为第一个结果,如果其他人也找到了它,那就有一个小错误。正确版本如下:

function log(b, n) {  
    return Math.log(n) / Math.log(b);  
}
Run Code Online (Sandbox Code Playgroud)