Как преобразовать строки в число, вычислить квадратный корень и округлить итоговое значение?

Рейтинг: 1Ответов: 1Опубликовано: 10.03.2023

Надо принять целочисленное число типа long в строковом виде, преобразовывать его в тип long, вычислить из него квадратный корень, и округлить получившееся значение до ближайшего long.

Правильно ли я реализовал это? Вот мой код:

public static long parseAndSqrt(String number) {
    long lo = Long.parseLong(number);
    long l = (long) Math.sqrt(lo);
    return Math.round(l);
}

Ответы

▲ 3Принят

Нет, это не совсем правильно, поскольку приведение вещественного числа к целому просто отбрасывает его дробную часть, а не округляет по правилам математики. Например, такой код

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)));
}