По условиям нужно исправить методы... бла-бла-бла... c квадратными и кубическими корнями всё понятно, интересней с pow(int, int) - там "забыли" взять абсолютную величину от power, поэтому степени меньше -1 считались не правильно. Добавил Math.abs(power) в цикл и справедливость (в математическом смысле) восторжествовала!
Как же я удивился, когда ментор сказал: "убедись что метод pow(int, int) используется метод Math.pow(double, double)". Ну вот зачем так, нормально же решали задачи? Тут наверное больше к формулировке условия задачи... формально я использовал класс Math в pow(int, int), а про конкретный медот речи не было.
У меня в профиле есть разные ачивки, вроде 2 задачи за один день и т.п., может тогда пусть и валидатор получает свои редиски и записывает в достижения - пять редисок за одну задачу.
package com.javarush.task.pro.task08.task0802;
/*
Утильный класс: часть 2
*/
public class Solution {
public static double sqrt(double a) {
return Math.sqrt(a);
}
public static double cbrt(double a) {
return Math.cbrt(a);
}
public static double pow(int number, int power) {
int result = number;
if(power == 0) {
return 1;
}
for(int i = 1; i < Math.abs(power); i++) {
result *= number;
}
return power < 0 ? 1d / result : result;
}
// public static void main(String[] args) {
// System.out.println(sqrt(4)); // 2.0
// System.out.println(cbrt(8)); // 2.0
// System.out.println(pow(2, -5)); // 0.03125
// System.out.println(pow(2, -4)); // 0.0625
// System.out.println(pow(2, -3)); // 0.125
// System.out.println(pow(2, -2)); // 0.25
// System.out.println(pow(2, -1)); // 0.5
// System.out.println(pow(2, 0)); // 1.0
// System.out.println(pow(2, 1)); // 2.0
// System.out.println(pow(2, 2)); // 4.0
// System.out.println(pow(2, 3)); // 8.0
// System.out.println(pow(2, 4)); // 16.0
// System.out.println(pow(2, 5)); // 32.0
//
// }
}
return power < 0 ? 1d / result : result;System.out.println(Math.pow(10000, 10)); System.out.println(pow(10000, 10));? оба логично выдают 1.0E40 Думаю что возведение в целую степень во всём диапазоне не даст какой-либо разницы, а в дробные этот метод не принимает ))