JavaScriptにはlog
関数が必要ですが、ベース10である必要があります。これのリストが表示されないため、それは不可能だと思います。これに対する解決策を知っている数学ウィザードはいますか?
「ベースの変更」フォーミュラ/アイデンティティ
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);
}
簡単です。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);
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
メソッドをサポートします。ポリフィルを使用できます:
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); }