ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

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

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для округления числа в меньшую сторону в JavaScript нужно применить функцию Math.floor():

JS
Скопировать код
let num = Math.floor(5.95); // результатом будет 5
Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Обзор методов округления чисел

В JavaScript для округления числа до ближайшего меньшего целого значения идеально подходит метод Math.floor(). Но как насчет отрицательных чисел? Если Math.floor() направляет нас к отрицательной бесконечности, то Math.trunc() усекает дробную часть, не учитывая знак числа.

JS
Скопировать код
let numNegative = Math.trunc(-5.95); // возвращает -5, тогда как Math.floor() вернет -6

Чтобы сэкономить время выполнения, можно использовать побитовый оператор ИЛИ |, но его можно применить только к неотрицательным числам.

JS
Скопировать код
let bitwiseRoundDown = 5.95 | 0; // вернет 5, но этот подход не пригодится во всех случаях

Контроль точности: округление с заданным количеством десятичных знаков

Для округления числа с определенным количеством знаков после запятой можно использовать сочетание Math.floor() и Math.pow():

JS
Скопировать код
function roundDown(value, decimals) {
  return Math.floor(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
}

let preciseRoundDown = roundDown(5.987, 2); // получим 5.98

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

Крайние случаи и совместимость

В своей работе метод Math.floor() хорошо зарекомендовал себя на различных платформах, однако стоит помнить о его особенностях:

  • Отрицательный ноль: Math.floor(-0) возвращает -0, что может повлиять на строковое представление числа и расчеты.
  • Бесконечности: JavaScript корректно обрабатывает Infinity и -Infinity, рассматривая их как наибольшее и наименьшее числа.
JS
Скопировать код
console.log(Math.floor(Infinity));  // возвращает Infinity
console.log(Math.floor(-Infinity)); // возвращает -Infinity

Если вы работаете с JavaScript, всегда имейте под рукой актуальную официальную документацию.

Визуализация

Представьте действие метода Math.floor() как понижение числа до ближайшего меньшего целого без лишних действий:

plaintext
Скопировать код
        ____
3.7 ⮕  |    |  ➡️ 3
       |📉  |   
       |____|

        ____
5.9 ⮕  |    |  ➡️ 5
       |📉  |  
       |____| 

        ____
2.3 ⮕  |    |  ➡️ 2
       |📉  |  
       |____|

Как видно, метод Math.floor() сводится к простому спуску до ближайшего нижележащего целого числа. Это просто и понятно.

Работа с числами с плавающей точкой

В JavaScript могут возникнуть проблемы при работе с числами с плавающей точкой. Могут попадаться ошибки округления, повторяющиеся дроби и числа, близкие к наибольшему целому числу. Все эти проблемы мы готовы обсудить и предложить варианты их решения:

Игнорирование дробной части

Если вам нужно округлить число в меньшую сторону, игнорируя дробные части:

JS
Скопировать код
let ignoreFraction = 5.95 – (5.95 % 1); // вернет 5, усекая дробную часть

Помощь от специализированных библиотек

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

Совместимость с Math.ceil()

Если вы столкнулись с проблемами при использовании Math.floor() на устаревших версиях браузеров, примените Math.ceil() в комбинации с отрицательным значением:

JS
Скопировать код
let badBrowserRoundDown = Math.ceil(-5.95) * -1; // вернет -5, обходя ограничения при округлении вверх

Полезные материалы

  1. Math.floor() – JavaScript | MDN — официальная документация MDN о методе Math.floor().
  2. Math.trunc() – JavaScript | MDN — подробности о методе Math.trunc().
  3. Методы чисел в JavaScript — обучающий материал W3Schools о методах чисел в JavaScript.
  4. Числа – JavaScript.info — описание методов toFixed и toPrecision.
  5. Функция JavaScript Math.round( ) – GeeksforGeeks — обзор методов округления в JavaScript от GeeksforGeeks.
  6. Reddit – Погрузитесь в обсуждения — дискуссия на Reddit о разных подходах к округлению чисел в JavaScript.