Ваш алгоритм работает для целых чисел, но для вычисления степени с показателем с плавающей запятой ваш подход не сработает.
Сначала давайте выясним, что означает показатель с плавающей запятой, взяв пример pow(2, 4.5)
:
Итак, чтобы вычислить это, сначала мы должны преобразовать число с плавающей запятой в дробь, а затем вычислить степень и квадратный корень.Это выполнимо, но это очень утомительно, и они являются гораздо лучшим решением для этого.
Если у нас есть , где b
может быть числом с плавающей запятой, а A
является результатом, мыможет принимать логарифм обеих сторон:
Что эквивалентно:
Что упрощает до:
Теперь это можно сделать на Java очень легко:
public static void main(String args[]) {
double a = 2;
double b = 4.5;
double A = Math.exp(b * Math.log(a));
System.out.println(A);
}
Если вы не хотите использовать встроенную функцию exp
, мы можемиспользуйте формулу Ньютона-Рафсона для ее вычисления:
где: !
обозначает факториал числа.Ваш первоначальный алгоритм может быть использован для вычисления pow
из x
с целым показателем степени.