Eu preciso de uma log
função para JavaScript, mas ela precisa ser a base 10. Não consigo ver nenhuma listagem para isso, então estou supondo que não seja possível. Existem assistentes de matemática por aí que sabem uma solução para isso?
javascript
math
logarithm
MetaGuru
fonte
fonte
Respostas:
Fórmula / Identidade "Mudança de Base"
Como
Math.log(x)
no JavaScript retorna o logaritmo natural dex
(o mesmo que ln (x) ), para a base 10, você pode dividir porMath.log(10)
(o mesmo que ln (10) ):Math.LN10
é uma constante pré-computada interna paraMath.log(10)
, portanto, essa função é essencialmente idêntica a:fonte
return Math.log(n) / Math.log(base);
Fácil, basta alterar a base, dividindo pelo log (10). Existe até uma constante para ajudá-lo
que é o mesmo que:
fonte
Você pode simplesmente dividir o logaritmo do seu valor e o logaritmo da base desejada. Também é possível substituir o
Math.log
método para aceitar um argumento base opcional:fonte
a resposta aqui causaria um problema óbvio de precisão e não é confiável em alguns casos de uso
fonte
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
https://en.wikipedia.org/wiki/Logarithm#Change_of_base
fonte
Então você pode fazer
NOTA: Inicialmente, pensei em fazer
Math.prototype.log10 = ...
isso, mas o usuário CMS apontou que o Math não funciona dessa maneira, então editei a.prototype
peça.fonte
Math
é um objeto, não uma função construtora, portanto, não possui umaprototype
propriedade.prototype
peça;)FF 25+ suporta um
Math.log10
método. Você pode usar o polyfill:O MDN lista os navegadores suportados .
fonte
Math.log10(x)
! 😁A resposta principal é boa para uma base arbitrária, mas a pergunta é sobre a base de log 10 e
Math.log10(x)
é padrão em todos os navegadores desde 2015. ** Exceto IE, se isso for importante para você por algum motivo.
fonte
Se você tiver um número x, o uso de
Math.log(x)
seria essencialmente lnx.Para convertê-lo em uma base diferente de e, você pode usar a seguinte função:
fonte
Para uso na base 10
Math.log10()
.Consulte os documentos em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10
fonte