Как запомнить способы округления числа до целого числа?

Существует 4 метода глобального объекта Math, которые используются для округления чисел до целого числа: Math.floor(), Math.ceil(), Math.round() и Math.trunc().

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

Math.floor() — округление до меньшего целого числа. Это означает, что мы всегда прижимаем число к полу.

Math.ceil() — округляет до большего числа.
Мы тянем число к потолку.

В повседневной жизни мы привыкли округлять числа, основываясь на близости дробного значения к целому. Близость для нас определяется половиной числа. То есть, если дробное значение числа превысило 0,5, то можно сказать, что оно равно примерно 1. Половина в нашем случае — это барьер, который можно использовать для округления числа в большую сторону.

Именно для такого более человечески корректного округления в JS есть следующий инструмент для округления чисел Math.round().

Но обратите особое внимание на отрицательную и положительную половину. Если мы достигли ровно половины положительного числа, то округлим число до следующего большего числа на шкале справа. То же самое мы сделаем и с отрицательным числом. Мы округлим его до большего числа. Math.round(-2.5) // -2. То есть, увидев половину нашего числа, мы сдвинем его вправо (к большему числу).

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

Math.trunc() не работает в браузерах до IE10. Но есть очень простое решение.

if (!Math.trunc) {
  Math.trunc = function(v) {
    v = +v;
    return (v - v % 1)  (!isFinite(v)  v === 0 ? v : v < 0 ? -0 : 0);
  };
}
Вход в полноэкранный режим Выход из полноэкранного режима

Вы также можете использовать методы прототипа Number: toFixed() и toPrecision(), но помните, что это не методы встроенного объекта Math и они возвращают строку, а не число.

Оцените статью
devanswers.ru
Добавить комментарий