Poznajemy czym jest logarytm oraz funkcje Math.log2 i Math.log10 w JavaScript. Do dzieła.
Logarytm log a^b = x jeżeli a^x = b.
Na przykład log2 2 = 1, bo 2^1 = 2. Sprawdźmy:
console.log(Math.log2(2)); //1
Ok, a log10 100?
Log 10 100 = x jeżeli a^x = 100 czyli 10^x = 100, czyli 2:
console.log(Math.log10(100)); //2
console.log(Math.pow(10, Math.log10(100)) === 100); //true
A Math.log? To logarytm naturalny, czyli z bazą nie 2 ani 10 tylko e.
Niby znając wzory można to wykorzystać i napisać funkcję, która pozwala nam ustalić logartym z dowolną bazą, ale takie rzeczy to już nie zabawa i możemy się mocno zdziwić:
function getBaseLog(x, y) {
return Math.log(y) / Math.log(x);
}
// 2 x 2 x 2 = 8
console.log(getBaseLog(2, 8));
//3
console.log(getBaseLog(5, 125));
//3.0000000000000004
Ja może wkleję jeszcze łatwiejszy kawałek kodu, na którym wykłada się język Python:
print((0.1 + 0.1 + 0.1) == 0.3) #False
Więc technologia ma swoje ograniczenia, podobnie jak nasza wiedza tak o warstwie technologicznej jak i matematycznej. Więc trzeba być ostrożnym z „super kodami” znalezionymi w internecie a nawet na stronie dokumentacji czy czegoś podobnego.