Округление чисел

JavaScript:
Округление чисел

Как это делать:

Вот как округлять числа в JavaScript с помощью Math.round(), Math.ceil() и Math.floor():

let originalNumber = 2.567;

let roundedDown = Math.floor(originalNumber); // 2
let roundedUp = Math.ceil(originalNumber);    // 3
let rounded = Math.round(originalNumber);     // 3 (поскольку .567 больше чем .5)

console.log(roundedDown); // Выводит: 2
console.log(roundedUp);   // Выводит: 3
console.log(rounded);     // Выводит: 3

Чтобы зафиксировать определенное количество десятичных мест, используйте toFixed():

let twoDecimals = originalNumber.toFixed(2); // "2.57" (возвращает строку)

console.log(twoDecimals); // Выводит: "2.57"

Чтобы преобразовать строку обратно в число, используйте унарный плюс или Number():

let numberAgain = +twoDecimals; // 2.57

console.log(numberAgain); // Выводит: 2.57

Подробнее

Округление чисел не ново; оно так же старо, как и числа. В JavaScript Math.round() использует метод “арифметического округления”: если дробная часть равна 0.5, округляет к ближайшему четному числу.

Для большего контроля toFixed() может быть вашим вариантом, но помните, что он возвращает строку. Преобразование обратно в число может быть дополнительным шагом, но это гарантирует, что вы продолжите работать с числовыми типами.

Альтернативы? Библиотеки вроде lodash предлагают _.round(number, [precision=0]) для более тонкого контроля. Или новейший Intl.NumberFormat дает вам высокоточную форматирование не только для округления.

Говоря о точности, стоит остерегаться особенностей с плавающей точкой в JavaScript. 0.1 + 0.2 не совсем равно 0.3 из-за того, как хранятся числа. Иногда округление становится необходимым, чтобы исправить такие ошибки с плавающей точкой.

Смотрите также