Math.round(): ближайшее целое и половинные значения
Math.round округляет число до ближайшего целого, но пограничные половины требуют точного понимания правила.
Назначение
Math.round округляет число до ближайшего целого, но пограничные половины требуют точного понимания правила.
Как это работает
При равном расстоянии до двух целых выбирается направление к плюс бесконечности. Поэтому 1.5 даёт 2, а -1.5 даёт -1. Для небольших отрицательных значений возможен отрицательный ноль.
Пример
console.assert(Math.round(1.4)===1);
console.assert(Math.round(1.5)===2);
console.assert(Math.round(-1.5)===-1);
console.assert(Object.is(Math.round(-0.1),-0));
Что должно получиться
Половинные значения демонстрируют асимметрию относительно нуля. Object.is позволяет заметить отрицательный ноль, который обычное сравнение с нулём не различает.
Граница применения и частая ошибка
Не переносите интуитивное «пять всегда от нуля» на JavaScript. Для специальных правил округления сначала определите требуемую модель и проверьте граничные случаи.
Самостоятельная проверка
Проверьте 1.4, 1.5, -1.5 и -0.1. Для последнего используйте Object.is, чтобы увидеть отличие отрицательного нуля от положительного.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.