Math.round() округляет число до ближайшего целого.
Это один из самых частых методов объекта Math, когда нужно быстро получить целое значение из дробного числа.
Синтаксис
Math.round(x)
x - число, которое нужно округлить.
Что делает Math.round()
Метод смотрит на дробную часть числа и возвращает ближайшее целое.
console.log(Math.round(4.4)); // 4
console.log(Math.round(4.5)); // 5
console.log(Math.round(4.6)); // 5
Если дробная часть меньше 0.5, число округляется вниз.
Если 0.5 и больше, результат идёт вверх.
Что возвращает Math.round()
Math.round() возвращает число типа number.
const result = Math.round(12.7);
console.log(result); // 13
console.log(typeof result); // "number"
Это важно: в отличие от toFixed(), здесь результатом будет именно число, а не строка.
Отрицательные числа
С отрицательными числами метод тоже работает, но здесь часто возникает путаница.
console.log(Math.round(-4.4)); // -4
console.log(Math.round(-4.5)); // -4
console.log(Math.round(-4.6)); // -5
Это значит, что Math.round() не просто “отрезает дробную часть”, а именно округляет до ближайшего целого по своим правилам.
Что происходит с .5
Это один из самых важных моментов.
console.log(Math.round(0.5)); // 1
console.log(Math.round(-0.5)); // -0
Для JavaScript значение с .5 округляется в сторону +Infinity.
Именно поэтому:
4.5становится5-4.5становится-4
Нюанс с -0
В некоторых случаях Math.round() может вернуть -0.
console.log(Math.round(-0.1)); // -0
console.log(Math.round(-0.5)); // -0
Обычно в интерфейсе это выглядит просто как 0, но технически это отдельное значение.
Проверить это можно так:
console.log(Object.is(Math.round(-0.1), -0)); // true
Для большинства обычных задач этот нюанс не мешает, но знать о нём полезно.
Math.round() и Math.floor()
Эти методы часто путают.
console.log(Math.round(4.8)); // 5
console.log(Math.floor(4.8)); // 4
Math.round()округляет до ближайшего целогоMath.floor()всегда идёт вниз
С отрицательными числами разница ещё заметнее:
console.log(Math.round(-4.2)); // -4
console.log(Math.floor(-4.2)); // -5
Math.round() и Math.ceil()
Math.ceil() делает не то же самое.
console.log(Math.round(4.2)); // 4
console.log(Math.ceil(4.2)); // 5
Math.round()округляет к ближайшему целомуMath.ceil()всегда идёт вверх
Math.round() и parseInt()
Это тоже разные задачи.
console.log(Math.round(4.9)); // 5
console.log(parseInt("4.9", 10)); // 4
Math.round() округляет число.
parseInt() читает целое число из строки и просто отбрасывает дробную часть.
Неявное приведение типов
Math.round() сначала пытается привести аргумент к числу.
console.log(Math.round("4.6")); // 5
console.log(Math.round(null)); // 0
console.log(Math.round(true)); // 1
console.log(Math.round(undefined)); // NaN
На практике обычно лучше передавать в метод уже готовое число, чтобы не было неожиданных результатов.
NaN и Infinity
Для специальных числовых значений метод ведёт себя предсказуемо.
console.log(Math.round(NaN)); // NaN
console.log(Math.round(Infinity)); // Infinity
console.log(Math.round(-Infinity)); // -Infinity
Число не меняется
Math.round() ничего не изменяет. Он просто возвращает новый результат.
const value = 3.7;
const rounded = Math.round(value);
console.log(value); // 3.7
console.log(rounded); // 4
Когда это полезно
Math.round() удобно использовать, когда:
- нужно округлить результат вычисления до целого
- число должно стать индексом, количеством или размером
- результат нужно показать без дробной части
Пример:
const rating = 4.6;
console.log(Math.round(rating)); // 5
Частые ошибки
Думать, что метод просто отбрасывает дробную часть
console.log(Math.round(4.9)); // 5
Если нужно именно отбросить дробную часть, это уже не та же задача.
Путать Math.round() и Math.floor()
console.log(Math.round(4.2)); // 4
console.log(Math.floor(4.2)); // 4
На положительных числах разница не всегда заметна, но на других значениях она быстро всплывает.
Удивляться округлению -4.5
console.log(Math.round(-4.5)); // -4
Это нормальное поведение JavaScript: значение .5 округляется в сторону +Infinity.
Быстрая памятка
Math.round()округляет число до ближайшего целого- метод возвращает
number 4.5становится5, а-4.5становится-4- это не то же самое, что
Math.floor()иMath.ceil() - в некоторых случаях результатом может быть
-0
Коротко
Math.round() - это стандартный способ округлить число до ближайшего целого в JavaScript. Главное, что стоит запомнить: метод работает не так же, как Math.floor(), а для значений с .5 использует правило округления в сторону +Infinity.