Java: логарифм с произвольным основанием

Я знаю, что в языке Java есть функция Math.log(a), которая вычисляет логарифм с основанием e. Есть Math.log10(a) для основания 10. Но как средствами Java вычислить логарифм с другим основанием, например, log 50 base 2?


Ответы (1 шт):

Автор решения: Vestalt

Согласно формуле (n - любое число):

log b (a) = log n (a) / log n (b)

Тогда вычисление логарифма с произвольным основанием в java будет выглядеть так:

public class Logarithm {
    public static double log(int base, int x) {
        return Math.log(x) / Math.log(base);
    }

    public static void main(String[] args) {
        System.out.println(Logarithm.log(2, 50));
    }
}

Вывод:

5.643856189774724

→ Ссылка