Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как округлить число вверх или вниз

Короткий ответ

Math.ceil() округляет вверх, Math.floor() — вниз, Math.round() — до ближайшего целого:

void main() {
    double value = 4.3;
 
    IO.println(Math.ceil(value));
    IO.println(Math.floor(value));
    IO.println(Math.round(value));
}

Результат:

5.0
4.0
4

ceil() и floor() возвращают double, а round() — long.

Сколько страниц

Типичная задача на округление вверх — посчитать количество страниц:

void main() {
    int items = 47;
    int perPage = 10;
 
    int pages = (int) Math.ceil((double) items / perPage);
    IO.println(pages);
    IO.println(Math.ceilDiv(items, perPage));
}

Результат:

5
5

Math.ceilDiv() (Java 18) делает то же самое без дробных чисел.

Отрицательные числа

«Вниз» значит к минус бесконечности, поэтому floor(-4.3) равно -5. Приведение к int просто отбрасывает дробную часть:

void main() {
    IO.println(Math.floor(-4.3));
    IO.println((int) -4.3);
    IO.println(Math.round(-4.5));
}

Результат:

-5.0
-4
-4

Частая ошибка

Передать в Math.ceil() результат целочисленного деления. Дробная часть уже потеряна:

void main() {
    int items = 47;
    IO.println(Math.ceil(items / 10));
    IO.println(Math.ceil(items / 10.0));
}

Результат:

4.0
5.0

Функции из этого ответа

  • Math.ceil() — Округляет вверх — до ближайшего большего или равного целого.
  • Math.floor() — Округляет вниз — до ближайшего меньшего или равного целого.
  • Math.round() — Округляет число до ближайшего целого.
  • BigDecimal — Точное десятичное число — для денег и расчётов, где недопустимы ошибки округления double.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.