Как преобразовать строки в число, вычислить квадратный корень и округлить итоговое значение?
Надо принять целочисленное число типа long в строковом виде, преобразовывать его в тип long, вычислить из него квадратный корень, и округлить получившееся значение до ближайшего long.
Правильно ли я реализовал это? Вот мой код:
public static long parseAndSqrt(String number) {
long lo = Long.parseLong(number);
long l = (long) Math.sqrt(lo);
return Math.round(l);
}
Ответы (1 шт):
Автор решения: Byb
→ Ссылка
Нет, это не совсем правильно, поскольку приведение вещественного числа к целому просто отбрасывает его дробную часть, а не округляет по правилам математики. Например, такой код
System.out.println((int)3.99);
выведет на экран 3.
Поэтому чтобы ваш код работал так, как вы хотите, исправить его нужно следующим образом:
public static long parseAndSqrt(String number) {
long lo = Long.parseLong(number);
double l = Math.sqrt(lo);
return Math.round(l);
}
Можно заметить, что здесь объявляется пара не совсем нужных переменных. В принципе, код можно записать в одну строку:
public static long improvedParseAndSqrt(String number) {
return Math.round(Math.sqrt(Long.parseLong(number)));
}