Floor: примеры (JAVASCRIPT)
floor(number): numberОсновы функции Math.floor()
Функция Math.floor() является частью встроенного объекта Math в JavaScript. Ее основное назначение - округление числа вниз до ближайшего целого значения. Функция всегда возвращает наибольшее целое число, которое меньше или равно переданному аргументу.
Когда используется:
- При необходимости получить целую часть числа после деления
- Для создания пагинации или разбивки данных на страницы
- При работе с финансовыми расчетами, где требуется округление в меньшую сторону
- В алгоритмах, требующих дискретных значений
Аргументы:
Функция принимает один обязательный аргумент:
x- число, которое требуется округлить вниз. Если передано нечисловое значение, оно будет неявно преобразовано в число.
Возвращаемое значение:
Функция возвращает целое число, представляющее результат округления вниз. Для специальных числовых значений:
Math.floor(NaN)возвращаетNaNMath.floor(Infinity)возвращаетInfinityMath.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)); // 44 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('текст')); // NaN5 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); // -54 -5
Python: модуль math содержит функцию floor(), а также есть оператор целочисленного деления //.
import math
print(math.floor(4.9)) # 4
print(math.floor(-4.9)) # -5
print(4.9 // 1) # 4.04 -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])); // NaN0 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(), разработчики получили альтернативу для случаев, когда нужно просто удалить дробную часть без округления.
Расширенные примеры использования
Создание функции для округления до указанного количества знаков:
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.153.14 3.141 -3.15
Использование в пагинации:
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)); // 1010 11 10
Получение целой части от деления:
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)); // -43 -4 -4
Генерация случайных целых чисел в диапазоне:
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 (пример результата)
Работа с битовыми операциями для положительных чисел:
// Для положительных чисел побитовое ИЛИ с 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); // -44 4 -5 -4 -4