211

JavaScriptの関数が必要ですが、log10進数である必要があります。これのリストが表示されないため、不可能だと思います。これに対する解決策を知っている数学の魔法使いはいますか?

4

10 に答える 10

338

「ベースの変更」式/アイデンティティ

10を底とする対数の数値は、次のIDで計算できます。

基数10の対数


JavaScriptでは(ln(x)と同じ)Math.log(x)の自然対数が返されるため、基数10の場合は( ln(10)と同じ)で除算できます。xMath.log(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);
}
于 2010-06-10T23:33:25.180 に答える
67

簡単です。log(10)で割ってベースを変更するだけです。あなたを助けるための定数さえあります

Math.log(num) / Math.LN10;

これは次と同じです:

Math.log(num) / Math.log(10);
于 2010-06-10T23:35:47.210 に答える
53

値の対数と目的の底の対数を単純に除算できます。また、Math.logメソッドをオーバーライドして、オプションの底引数を受け入れることもできます。

Math.log = (function() {
  var log = Math.log;
  return function(n, base) {
    return log(n)/(base ? log(base) : 1);
  };
})();

Math.log(5, 10);
于 2010-06-10T23:38:45.793 に答える
17

ここでの答えは明らかな精度の問題を引き起こし、一部のユースケースでは信頼できません

> 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
于 2013-06-01T03:20:29.220 に答える
16
Math.log10 = function(n) {
    return (Math.log(n)) / (Math.log(10));
}

その後、あなたはすることができます

Math.log10(your_number);

注:当初はこれを行うことを考えていMath.prototype.log10 = ...ましたが、ユーザーCMSが、Mathがこのように機能しないことを指摘したため、.prototypeパーツを編集しました。

于 2010-06-10T23:37:02.480 に答える
16
const logBase = (n, base) => Math.log(n) / Math.log(base);

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

于 2014-01-23T10:44:03.100 に答える
9

FF25+はMath.log10メソッドをサポートします。ポリフィルを使用できます。

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
于 2014-08-01T10:48:05.447 に答える
2

Math.log10(x)

一番上の答えは任意の基数で問題ありませんが、質問は対数基数10に関するものであり、2015年以降すべてのブラウザーで標準Math.log10(x)となっています。 *

* IEを除いて、それが何らかの理由であなたにとって重要である場合。

于 2019-06-03T14:01:49.050 に答える
0

数値がxの場合、の使用Math.log(x)は基本的にlnxになります。

e以外のベースに変換するには、次の関数を使用できます。

function(x){ return Math.log(x)/Math.log(10); }
于 2016-06-24T03:41:02.627 に答える
0

10進数の場合はを使用しますMath.log10()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10のドキュメントを参照してください。

于 2020-05-19T17:23:11.263 に答える