Ich benötige eine log
Funktion für JavaScript, aber es muss Basis 10 sein. Ich kann keine Auflistung dafür sehen, daher gehe ich davon aus, dass dies nicht möglich ist. Gibt es da draußen Mathe-Assistenten, die eine Lösung dafür kennen?
javascript
math
logarithm
MetaGuru
quelle
quelle
Antworten:
Formel / Identität "Basiswechsel"
Da
Math.log(x)
in JavaScript der natürliche Logarithmus vonx
(wie in ln (x) ) zurückgegeben wird, können Sie für Basis 10 durchMath.log(10)
(wie in ln (10) ) dividieren :Math.LN10
ist eine eingebaute vorberechnete Konstante fürMath.log(10)
, daher ist diese Funktion im Wesentlichen identisch mit:quelle
return Math.log(n) / Math.log(base);
Einfach, ändern Sie einfach die Basis, indem Sie durch das Protokoll (10) teilen. Es gibt sogar eine Konstante, die Ihnen hilft
Das ist das gleiche wie:
quelle
Sie können einfach den Logarithmus Ihres Werts und den Logarithmus der gewünschten Basis teilen. Außerdem können Sie die
Math.log
Methode überschreiben , um ein optionales Basisargument zu akzeptieren:quelle
Die Antwort hier würde ein offensichtliches Präzisionsproblem verursachen und ist in einigen Anwendungsfällen nicht zuverlässig
quelle
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
https://en.wikipedia.org/wiki/Logarithm#Change_of_base
quelle
Dann können Sie tun
HINWEIS: Anfangs dachte ich, dies
Math.prototype.log10 = ...
zu tun, aber Benutzer CMS wies darauf hin, dass Math nicht auf diese Weise funktioniert, und habe das.prototype
Teil herausgeschnitten.quelle
Math
ist ein Objekt, keine Konstruktorfunktion, daher hat es keineprototype
Eigenschaft..prototype
Teil;)FF 25+ unterstützt eine
Math.log10
Methode. Sie können Polyfill verwenden:MDN listet die unterstützten Browser auf .
quelle
Math.log10(x)
! 😁Die beste Antwort ist für eine beliebige Basis in Ordnung, aber die Frage bezieht sich auf die Protokollbasis 10 und
Math.log10(x)
ist seit 2015 in allen Browsern Standard. ** Außer IE, wenn Ihnen das aus irgendeinem Grund wichtig ist.
quelle
Wenn Sie eine Zahl x haben,
Math.log(x)
wäre die Verwendung von im Wesentlichen lnx.Um es in eine andere Basis als e zu konvertieren, können Sie die folgende Funktion verwenden:
quelle
Für Basis 10 verwenden
Math.log10()
.Siehe Dokumente unter: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10
quelle