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.