JavaScriptでMath.log()の底をどのように指定できますか?
私はJavaScript用のlog関数が必要ですが、それは底が10でなければなりません。このようなリストが見当たらないので、不可能だと思っています。これに対する解決策を知っている数学の達人はいますか?
回答 #1
「対数の底の変換」公式/恒等式
底が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);
}
回答 #2
簡単です、底を変えるにはlog(10)で割ればいいだけです。それを助ける定数もあります
Math.log(num) / Math.LN10;
これは次のものと同じです:
Math.log(num) / Math.log(10);
回答 #3
値の対数と、望む底の対数を単純に割ることができます。また、オプションの底引数を受け入れるように Math.log メソッドをオーバーライドすることもできます:
Math.log = (function() {
var log = Math.log;
return function(n, base) {
return log(n)/(base ? log(base) : 1);
};
})();
Math.log(5, 10);
回答 #4
const logBase = (n, base = Math.E) => Math.log(n) / Math.log(base)
https://ja.wikipedia.org/wiki/対数#底の変換
回答 #5
ここでの答えは明らかな精度の問題を引き起こす可能性があり、いくつかの使用例では信頼できません
> 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
回答 #6
Math.log10 = function(n) {
return (Math.log(n)) / (Math.log(10));
}
それからあなたはできる
Math.log10(your_number);
注:最初はこれを行うために Math.prototype.log10=... をしようと思いましたが、ユーザーのCMSが Math はこの方法では動作しないと指摘したので、.prototype の部分を編集して削除しました。
