Potrzebuję log
funkcji dla JavaScript, ale musi to być baza 10. Nie widzę w tym żadnej listy, więc zakładam, że to niemożliwe. Czy są jacyś czarodzieje matematyki, którzy znają rozwiązanie tego problemu?
javascript
math
logarithm
MetaGuru
źródło
źródło
Odpowiedzi:
Formuła / tożsamość „Zmiana podstawy”
Ponieważ
Math.log(x)
w JavaScript zwraca logarytm naturalnyx
(taki sam jak ln (x) ), dla podstawy 10 możesz podzielić przezMath.log(10)
(taki sam jak ln (10) ):Math.LN10
jest wbudowaną wstępnie obliczoną stałą dlaMath.log(10)
, więc ta funkcja jest zasadniczo identyczna z:źródło
return Math.log(n) / Math.log(base);
Łatwo, wystarczy zmienić bazę, dzieląc przez log (10). Jest nawet stała, aby ci pomóc
który jest taki sam jak:
źródło
Możesz po prostu podzielić logarytm wartości i logarytm pożądanej podstawy, możesz też przesłonić
Math.log
metodę, aby zaakceptować opcjonalny argument bazowy:źródło
odpowiedź tutaj spowodowałaby oczywisty problem z precyzją i nie jest wiarygodna w niektórych przypadkach użycia
źródło
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
https://en.wikipedia.org/wiki/Logarithm#Change_of_base
źródło
To możesz zrobić
UWAGA: Początkowo myślałem, aby to
Math.prototype.log10 = ...
zrobić, ale użytkownik CMS zwrócił uwagę, że matematyka nie działa w ten sposób, więc zredagowałem tę.prototype
część.źródło
Math
jest obiektem, a nie funkcją konstruktora, dlatego nie maprototype
właściwości..prototype
część;)FF 25+ obsługuje
Math.log10
metodę. Możesz użyć polyfill:MDN wyświetla listę obsługiwanych przeglądarek .
źródło
Math.log10(x)
! 😁Najlepsza odpowiedź jest odpowiednia dla dowolnej bazy danych, ale pytanie dotyczy bazy danych dziennika 10 i
Math.log10(x)
jest standardem we wszystkich przeglądarkach od 2015 roku. ** Z wyjątkiem IE, jeśli z jakiegoś powodu jest to dla Ciebie ważne.
źródło
Jeśli masz liczbę x, użyj
Math.log(x)
będzie w zasadzie lnx.Aby przekonwertować go na bazę inną niż e, możesz użyć następującej funkcji:
źródło
Do użytku z bazą 10
Math.log10()
.Zobacz dokumenty na: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10
źródło