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
из-за того, как хранятся числа. Иногда округление становится необходимым, чтобы исправить такие ошибки с плавающей точкой.
Смотрите также
- Документация по Math от Mozilla: MDN Web Docs
- Округление для финансовых расчетов с
Intl.NumberFormat
: API интернационализации ECMAScript - Округление
lodash
: Документация Lodash