Floor: примеры (JAVASCRIPT)

Полное руководство по Math.floor в JavaScript с примерами
Раздел: Математика, Округление
floor(number): number

Основы функции Math.floor()

Функция Math.floor() является частью встроенного объекта Math в JavaScript. Ее основное назначение - округление числа вниз до ближайшего целого значения. Функция всегда возвращает наибольшее целое число, которое меньше или равно переданному аргументу.

Когда используется:

  • При необходимости получить целую часть числа после деления
  • Для создания пагинации или разбивки данных на страницы
  • При работе с финансовыми расчетами, где требуется округление в меньшую сторону
  • В алгоритмах, требующих дискретных значений

Аргументы:

Функция принимает один обязательный аргумент:

  • x - число, которое требуется округлить вниз. Если передано нечисловое значение, оно будет неявно преобразовано в число.

Возвращаемое значение:

Функция возвращает целое число, представляющее результат округления вниз. Для специальных числовых значений:

  • Math.floor(NaN) возвращает NaN
  • Math.floor(Infinity) возвращает Infinity
  • Math.floor(-Infinity) возвращает -Infinity
  • Для значений null, false, пустой строки возвращает 0
  • Для true возвращает 1

Базовые примеры использования

Простое округление положительных чисел:

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

Округление отрицательных чисел:

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

Специальные значения и преобразование типов:

console.log(Math.floor('5.7'));     // 5
console.log(Math.floor(null));      // 0
console.log(Math.floor(undefined)); // NaN
console.log(Math.floor('текст'));   // NaN
5
0
NaN
NaN

Похожие функции в JavaScript

Math.ceil() - округляет число вверх до ближайшего целого. Пример: Math.ceil(4.1) вернет 5, Math.ceil(-4.1) вернет -4.

Math.round() - округляет число до ближайшего целого по правилам математики. Пример: Math.round(4.4) вернет 4, Math.round(4.5) вернет 5.

Math.trunc() - возвращает целую часть числа, удаляя дробную часть без округления. Пример: Math.trunc(4.9) вернет 4, Math.trunc(-4.9) вернет -4.

parseInt() - преобразует строку в целое число, игнорируя дробную часть. Пример: parseInt('4.9') вернет 4.

Когда что использовать:

  • Math.floor() - когда нужно гарантированно получить меньшее или равное значение
  • Math.ceil() - когда требуется большее или равное значение
  • Math.round() - для классического математического округления
  • Math.trunc() - когда нужно просто отбросить дробную часть без округления

Аналоги в других языках программирования

PHP: функция floor() работает аналогично, но возвращает число типа float.

echo floor(4.9);   // 4
echo floor(-4.9);  // -5
4
-5

Python: модуль math содержит функцию floor(), а также есть оператор целочисленного деления //.

import math
print(math.floor(4.9))   # 4
print(math.floor(-4.9))  # -5
print(4.9 // 1)          # 4.0
4
-5
4.0

MySQL: функция FLOOR() работает аналогично JavaScript варианту.

SELECT FLOOR(4.9), FLOOR(-4.9);
4, -5

C/C++: функция floor() из библиотеки math.h, возвращает double.

#include 
printf("%f", floor(4.9));   // 4.000000
printf("%f", floor(-4.9));  // -5.000000
4.000000
-5.000000

Типичные ошибки при использовании

1. Ожидание округления по математическим правилам:

// Ожидание: -4
// Реальность: -5
console.log(Math.floor(-4.2));
-5

2. Передача неявно преобразуемых значений без проверки:

console.log(Math.floor(''));        // 0
console.log(Math.floor('   '));    // 0
console.log(Math.floor([]));       // 0
console.log(Math.floor([5]));      // 5
console.log(Math.floor([5, 6]));   // NaN
0
0
0
5
NaN

3. Работа с очень большими числами:

console.log(Math.floor(1e20));      // 100000000000000000000
console.log(Math.floor(1e21));      // 1e+21 (потеря точности)
100000000000000000000
1e+21

Изменения в последних версиях

Функция Math.floor() остается неизменной с самых ранних версий JavaScript и соответствует стандарту ECMAScript 1 (1997). В ES6 (2015) не было внесено изменений в ее поведение.

Важное уточнение: с появлением в ES2015 функции Math.trunc(), разработчики получили альтернативу для случаев, когда нужно просто удалить дробную часть без округления.

Расширенные примеры использования

Создание функции для округления до указанного количества знаков:

Пример javascript
function floorToFixed(num, decimals) {
    const factor = 10 ** decimals;
    return Math.floor(num * factor) / factor;
}

console.log(floorToFixed(3.14159, 2));  // 3.14
console.log(floorToFixed(3.14159, 3));  // 3.141
console.log(floorToFixed(-3.14159, 2)); // -3.15
3.14
3.141
-3.15

Использование в пагинации:

Пример javascript
function calculatePages(totalItems, itemsPerPage) {
    return Math.floor((totalItems + itemsPerPage - 1) / itemsPerPage);
}

console.log(calculatePages(100, 10));  // 10
console.log(calculatePages(101, 10));  // 11
console.log(calculatePages(99, 10));   // 10
10
11
10

Получение целой части от деления:

Пример javascript
function integerDivision(a, b) {
    return Math.floor(a / b);
}

console.log(integerDivision(10, 3));   // 3
console.log(integerDivision(-10, 3));  // -4
console.log(integerDivision(10, -3));  // -4
3
-4
-4

Генерация случайных целых чисел в диапазоне:

Пример javascript
function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomInt(1, 10));  // число от 1 до 10 включительно
7 (пример результата)

Работа с битовыми операциями для положительных чисел:

Пример javascript
// Для положительных чисел побитовое ИЛИ с 0 дает тот же эффект
console.log(4.9 | 0);     // 4
console.log(~~4.9);       // 4 (двойное побитовое НЕ)

// Но для отрицательных чисел поведение отличается
console.log(Math.floor(-4.9));  // -5
console.log(-4.9 | 0);          // -4
console.log(~~-4.9);            // -4
4
4
-5
-4
-4

JS floor function comments

En
Floor Returns the largest integer less than or equal to a number