JavaScript предоставляет несколько встроенных методов для округления чисел, которые находятся в объекте Math
. Каждый метод выполняет округление по разным правилам: к ближайшему целому, вверх или вниз.
Math.round — округление до ближайшего целого
Метод Math.round
округляет число к ближайшему целому. Если дробная часть 0.5 или больше, число округляется вверх, в противном случае — вниз.
console.log(Math.round(4.3)); // 4
console.log(Math.round(4.7)); // 5
console.log(Math.round(-4.5)); // -4
Math.floor — округление вниз
Math.floor
всегда округляет число в меньшую сторону (в сторону минус бесконечности).
console.log(Math.floor(4.9)); // 4
console.log(Math.floor(-4.1)); // -5
Math.ceil — округление вверх
Math.ceil
всегда округляет число в большую сторону (в сторону плюс бесконечности).
console.log(Math.ceil(4.1)); // 5
console.log(Math.ceil(-4.9)); // -4
Округление до заданного знака после запятой
Для округления до определенного числа знаков после запятой можно комбинировать Math.round
и арифметику:
function roundTo(value, decimals) {
const factor = 10 ** decimals;
return Math.round(value * factor) / factor;
}
console.log(roundTo(3.14159, 2)); // 3.14
console.log(roundTo(1.005, 2)); // 1.01 (особенность чисел с плавающей точкой)
Проблемы с точностью
JavaScript использует формат чисел с плавающей точкой двойной точности (IEEE 754), поэтому некоторые числа округляются не совсем корректно:
console.log(1.005 * 100); // 100.49999999999999
Решением может быть более надежное округление с использованием трюка с добавлением небольшого числа:
function safeRound(value, decimals) {
const factor = 10 ** decimals;
return Math.round((value + Number.EPSILON) * factor) / factor;
}
console.log(safeRound(1.005, 2)); // 1.01
Округление через toFixed
Метод toFixed
приводит число к строке с заданным числом знаков после запятой:
console.log((3.14159).toFixed(2)); // '3.14'
Однако toFixed
возвращает строку, поэтому для дальнейших вычислений ее придется преобразовать обратно в число:
const rounded = Number((3.14159).toFixed(2));
console.log(rounded); // 3.14
Округление чисел в JavaScript — это частая задача при работе с ценами, координатами, процентами и другими данными, где важна точность представления. Выбор метода зависит от конкретных требований: до целого числа, до десятых или строго вверх/вниз. Понимание работы чисел с плавающей точкой помогает избегать неожиданных результатов при таких операциях.