Learn JavaScript

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

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

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

Синтаксис

Math.floor(x)

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

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

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

console.log(Math.floor(4.9)); // 4
console.log(Math.floor(4.1)); // 4
console.log(Math.floor(4));   // 4

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

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

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

const result = Math.floor(12.7);

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

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

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

Здесь начинается самое важное.

console.log(Math.floor(-4.1)); // -5
console.log(Math.floor(-4.9)); // -5
console.log(Math.floor(-0.1)); // -1

Многие ожидают, что дробная часть просто исчезнет, но Math.floor() работает не так.

Он идёт вниз по числовой прямой, а для отрицательных чисел “вниз” означает ещё меньшее значение.

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

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

console.log(Math.floor(4.9)); // 4

Но на отрицательных уже хорошо видно:

console.log(Math.floor(-4.9)); // -5

Именно поэтому Math.floor() нельзя описывать как “просто отрезать всё после точки”.

Math.floor() и Math.round()

Эти методы решают разные задачи.

console.log(Math.floor(4.8)); // 4
console.log(Math.round(4.8)); // 5
  • Math.floor() всегда идёт вниз
  • Math.round() округляет до ближайшего целого

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

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

Math.floor() и Math.ceil()

Math.ceil() делает противоположное.

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

Math.floor() и Math.trunc()

Вот здесь у новичков бывает особенно частая путаница.

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

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

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

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

console.log(Math.floor("4.9")); // 4
console.log(Math.floor(null));  // 0
console.log(Math.floor(true));  // 1
console.log(Math.floor(undefined)); // NaN

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

NaN и Infinity

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

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

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

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

const value = 3.7;
const floored = Math.floor(value);

console.log(value);   // 3.7
console.log(floored); // 3

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

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

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

Пример:

const page = Math.floor(offset / 10);

console.log(page);

Ещё частый сценарий:

const randomIndex = Math.floor(Math.random() * 10);

Так обычно получают случайный индекс от 0 до 9.

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

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

console.log(Math.floor(-4.9)); // -5

На отрицательных числах это уже хорошо видно.

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

console.log(Math.floor(4.8)); // 4
console.log(Math.round(4.8)); // 5

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

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

console.log(Math.floor(-4.9)); // -5
console.log(Math.trunc(-4.9)); // -4

Это одна из самых частых ошибок при работе с отрицательными числами.

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

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

Коротко

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