Love Frontend
Сообщество
фронтенд разработчиков
EN

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

Дата публикации: 25.10.2019

Для округления до целого числа у нас есть методы глобального объекта Math. Их всего 4: Math.floor(), Math.ceil(), Math.round() и Math.trunc(). В статье приводятся визуальные примеры для лучшего запоминания и в конце небольшой тест для проверки ваших знаний.

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

Math.floor() - округляет до меньшего целого числа. То есть мы всегда придавливаем число к полу.

как работает Math.floor()

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

как работает Math.ceil()

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

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

Math.round() - возвращает число, округлённое к ближайшему целому.

как работает Math.round()

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

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

как работает 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 и они возвращают строку, а не число.

Удастся ли вам сейчас без подглядываний сразу понять как округлится то или иное число? Впишите результат округления в поле и нажмите Enter или кнопку "Дальше". Всего 12 вопросов.


Дальше

Оставьте свой e-mail чтобы получать уведомления о свежих статьях.