Learn JavaScript

Math.ceil() - метод для округления числа вверх в JavaScript

Math.ceil() округляет число вверх до ближайшего целого.

Проще всего запомнить так: метод всегда идёт в сторону +Infinity.

Синтаксис

Math.ceil(x)

x - число, которое нужно округлить вверх.

Что делает Math.ceil()

Метод возвращает наименьшее целое число, которое больше или равно исходному значению.

console.log(Math.ceil(4.1)); // 5
console.log(Math.ceil(4.9)); // 5
console.log(Math.ceil(4));   // 4

На положительных числах это выглядит как движение к большему целому.

Что возвращает Math.ceil()

Math.ceil() возвращает число типа number.

const result = Math.ceil(12.2);

console.log(result);        // 13
console.log(typeof result); // "number"

Это именно число, а не строка.

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

Здесь как раз появляется полезный нюанс.

console.log(Math.ceil(-4.1)); // -4
console.log(Math.ceil(-4.9)); // -4
console.log(Math.ceil(-0.1)); // 0

Для отрицательных чисел “вверх” означает движение к нулю, потому что Math.ceil() идёт к +Infinity.

Почему это не просто “убрать дробную часть”

На некоторых числах результат похож:

console.log(Math.ceil(-4.1)); // -4

Но суть метода не в удалении дробной части, а именно в движении вверх по числовой прямой.

Поэтому правильнее думать не “отрезать всё после точки”, а “взять ближайшее целое сверху”.

Math.ceil() и Math.floor()

Это противоположные методы.

console.log(Math.ceil(4.2));  // 5
console.log(Math.floor(4.2)); // 4
  • Math.ceil() идёт вверх
  • Math.floor() идёт вниз

На отрицательных числах разница особенно заметна:

console.log(Math.ceil(-4.2));  // -4
console.log(Math.floor(-4.2)); // -5

Math.ceil() и Math.round()

Math.round() делает другое.

console.log(Math.ceil(4.2));  // 5
console.log(Math.round(4.2)); // 4
  • Math.ceil() всегда идёт вверх
  • Math.round() выбирает ближайшее целое

Math.ceil() и Math.trunc()

Эти методы тоже легко перепутать.

console.log(Math.ceil(4.9));  // 5
console.log(Math.trunc(4.9)); // 4
console.log(Math.ceil(-4.9)); // -4
console.log(Math.trunc(-4.9)); // -4
  • Math.ceil() идёт вверх
  • Math.trunc() просто отбрасывает дробную часть

На отрицательных числах результат иногда совпадает, но смысл у методов разный.

Неявное приведение типов

Math.ceil() сначала пытается привести аргумент к числу.

console.log(Math.ceil("4.1")); // 5
console.log(Math.ceil(null));  // 0
console.log(Math.ceil(true));  // 1
console.log(Math.ceil(undefined)); // NaN

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

NaN и Infinity

Для специальных значений метод ведёт себя предсказуемо.

console.log(Math.ceil(NaN));       // NaN
console.log(Math.ceil(Infinity));  // Infinity
console.log(Math.ceil(-Infinity)); // -Infinity

Число не меняется

Math.ceil() не изменяет исходное значение. Он только возвращает новый результат.

const value = 3.2;
const ceiled = Math.ceil(value);

console.log(value);  // 3.2
console.log(ceiled); // 4

Когда это полезно

Math.ceil() удобно использовать, когда:

  • нужно гарантированно округлить число вверх
  • важно получить верхнюю границу диапазона
  • нужно посчитать количество страниц, блоков или шагов

Пример:

const totalPages = Math.ceil(totalItems / 10);

console.log(totalPages);

Это очень частый сценарий в интерфейсах и пагинации.

Частые ошибки

Думать, что метод просто убирает дробную часть

console.log(Math.ceil(4.9)); // 5

Если нужно именно отбросить дробную часть, это уже другая задача.

Путать Math.ceil() и Math.round()

console.log(Math.ceil(4.2));  // 5
console.log(Math.round(4.2)); // 4

Один метод всегда идёт вверх, другой ищет ближайшее целое.

Путать Math.ceil() и Math.floor()

console.log(Math.ceil(-4.2));  // -4
console.log(Math.floor(-4.2)); // -5

Это противоположные направления округления.

Быстрая памятка

  • Math.ceil() округляет число вверх
  • метод возвращает number
  • он всегда идёт в сторону +Infinity
  • на отрицательных числах это часто означает движение к нулю
  • это не то же самое, что Math.floor(), Math.round() и Math.trunc()

Коротко

Math.ceil() - это стандартный способ округлить число вверх в JavaScript. Главное, что стоит запомнить: метод всегда идёт к +Infinity, поэтому на отрицательных числах он ведёт себя не как простое удаление дробной части, а как движение к большему значению.