Не получается решить задачу возведения в отрицательную степерь в java через while
Вот описание задачи: Напишите программу, которая возводит число в любую целую степень. Первое число, то которое нужно возвести. Второе — степень. Пример ввода: 1-1 Пример ввода: 2-1 Вывод: 1 Вывод: 0.5 Начал решать, перепробовал разные способы, но при вводе указанных цифр не совпадают выводы, особенно где при вводе 2 -1 вывод должен быть: 0.5. Кто поможет?
public class Main {
public static void main(String[] args) {
int number, power;
Scanner scanner = new Scanner(System.in);
number = scanner.nextInt();
power = scanner.nextInt();
scanner.close();
int temp = number, temp2=power;
while (power!=0) {
...
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Для отрицательной степени нужно возводить в заданную степень дробь 1/number, объявленную как число с плавающей точкой.
public static double pow(int x, int n) {
double p = n < 0 ? 1.0 / x : x;
double res = 1.0;
for (int i = 0, m = Math.abs(n); i < m; i++) {
res *= p;
}
return res;
}
Вариант с while:
public static double pow(int x, int n) {
double p = n < 0 ? 1.0 / x : x;
int m = n < 0 ? -n : n;
double res = 1.0;
while (m-- > 0) {
res *= p;
}
return res;
}
Тест:
for (int n = -2; n <= 2; n++) {
System.out.println("2^" + n + " = " + pow(2, n));
}
2^-2 = 0.25
2^-1 = 0.5
2^0 = 1.0
2^1 = 2.0
2^2 = 4.0