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, поэтому на отрицательных числах он работает не как простое удаление дробной части.