Learn JavaScript

Math.round() - метод для округления числа до ближайшего целого в JavaScript

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.