log
JavaScript için bir fonksiyona ihtiyacım var , ancak temel 10 olması gerekiyor. Bunun için herhangi bir liste göremiyorum, bu yüzden mümkün olmadığını varsayıyorum. Bunun için bir çözüm bilen matematik sihirbazları var mı?
log
JavaScript için bir fonksiyona ihtiyacım var , ancak temel 10 olması gerekiyor. Bunun için herhangi bir liste göremiyorum, bu yüzden mümkün olmadığını varsayıyorum. Bunun için bir çözüm bilen matematik sihirbazları var mı?
Yanıtlar:
"Baz Değişimi" Formülü / Kimlik
10 tabanına logaritma için sayısal değer aşağıdaki kimlikle hesaplanabilir.
Yana Math.log(x)
JavaScript doğal logaritma döner olarak x
(aynı şekilde ln (x) ) Eğer bölün bazın 10, Math.log(10)
(aynı şekilde ln (10) ):
function log10(val) {
return Math.log(val) / Math.LN10;
}
Math.LN10
yerleşik bir önceden hesaplanmış sabittir Math.log(10)
, bu nedenle bu işlev esasen aşağıdakilerle aynıdır:
function log10(val) {
return Math.log(val) / Math.log(10);
}
return Math.log(n) / Math.log(base);
Değerinizin logaritmasını ve istenen tabanın logaritmasını bölebilirsiniz, ayrıca Math.log
isteğe bağlı bir temel argümanını kabul etme yöntemini geçersiz kılabilirsiniz :
Math.log = (function() {
var log = Math.log;
return function(n, base) {
return log(n)/(base ? log(base) : 1);
};
})();
Math.log(5, 10);
bu sorunun cevabı bariz hassasiyet sorununa neden olur ve bazı kullanım durumlarında güvenilir değildir
> 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
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
const logBase = (n, base) => Math.log(n) / Math.log(base);
Math.log10 = function(n) {
return (Math.log(n)) / (Math.log(10));
}
Sonra yapabilirsin
Math.log10(your_number);
NOT: Başlangıçta bunu yapmayı düşündüm Math.prototype.log10 = ...
, ancak kullanıcı CMS , Math'ın bu şekilde çalışmadığına dikkat çekti, bu yüzden .prototype
parçayı düzenledim .
.prototype
parçayı kaldırın ;)
FF 25+ bir Math.log10
yöntemi destekler . Çoklu dolguyu kullanabilirsiniz:
if (!Math.log10) Math.log10 = function(t){ return Math.log(t)/Math.LN10; };
MDN, desteklenen tarayıcıları listeler .
Masaüstü Tarayıcılar
Chrome Firefox (Gecko) Internet Explorer Opera Safari 38 25 (25) Not supported 25 7.1
Mobil Tarayıcılar
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)
! 😁
Üst cevap keyfi bir üs için iyi, ama soru günlüğü tabanını 10 ilgili olduğu ve Math.log10(x)
olmuştur 2015 yılından bu yana tüm tarayıcılarda standart *
* IE hariç, bu sizin için bir nedenden dolayı önemliyse.
Eğer x numaranız varsa, o zaman kullanımı Math.log(x)
lnx olur.
E dışında bir tabana dönüştürmek için aşağıdaki işlevi kullanabilirsiniz:
function(x){ return Math.log(x)/Math.log(10); }
Baz 10 kullanımı için Math.log10()
.
Dokümanlara bakınız: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10