J'ai besoin d'une log
fonction pour JavaScript, mais elle doit être en base 10. Je ne vois aucune liste pour cela, donc je suppose que ce n'est pas possible. Y a-t-il des magiciens des mathématiques qui connaissent une solution?
javascript
math
logarithm
MetaGuru
la source
la source
Réponses:
Formule / identité "Changement de base"
Comme
Math.log(x)
en JavaScript renvoie le logarithme naturel dex
(identique à ln (x) ), pour la base 10, vous pouvez diviser parMath.log(10)
(identique à ln (10) ):Math.LN10
est une constante précalculée intégrée pourMath.log(10)
, donc cette fonction est essentiellement identique à:la source
return Math.log(n) / Math.log(base);
Facile, il suffit de changer la base en la divisant par la bûche (10). Il y a même une constante pour vous aider
ce qui équivaut à:
la source
Vous pouvez simplement diviser le logarithme de votre valeur et le logarithme de la base souhaitée, vous pouvez également remplacer la
Math.log
méthode pour accepter un argument de base facultatif:la source
la réponse ici causerait un problème de précision évident et n'est pas fiable dans certains cas d'utilisation
la source
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
https://en.wikipedia.org/wiki/Logarithm#Change_of_base
la source
Ensuite, vous pouvez faire
NOTE: Au départ, je pensais
Math.prototype.log10 = ...
faire cela, mais le CMS utilisateur a souligné que les mathématiques ne fonctionnent pas de cette façon, j'ai donc édité la.prototype
partie.la source
Math
est un objet, pas une fonction constructeur, donc il n'a pas deprototype
propriété..prototype
pièce;)FF 25+ prend en charge une
Math.log10
méthode. Vous pouvez utiliser polyfill:MDN répertorie les navigateurs pris en charge .
la source
Math.log10(x)
! 😁La première réponse est correcte pour une base arbitraire, mais la question concerne la base de journal 10 et
Math.log10(x)
est standard sur tous les navigateurs depuis 2015. ** Sauf IE, si cela est important pour vous pour une raison quelconque.
la source
Si vous avez un nombre x, alors l'utilisation de
Math.log(x)
serait essentiellement lnx.Pour le convertir en une base autre que e, vous pouvez utiliser la fonction suivante:
la source
Pour une utilisation en base 10
Math.log10()
.Voir les documents sur: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10
la source