ウェブサイト検索

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 の部分を編集して削除しました。

関連記事