Уроки по веб-разработке

Округление числа в JS

Округление чисел в JavaScript часто требуется при проведении математических операций: в калькуляторах, при просчете высоты/ширины блока и т.д.

В этом посте мы рассмотрим как округлить число в JS до целого и отбросить дробную часть, а также до 2 знаков после запятой.

Math.ceil() — округление в большую сторону

С помощью метода ceil() объекта Math мы можем округлить число в большую сторону. Останется только целая часть, без десятичной. Нам нужно передать только один параметр — число, которое мы хотим округлить:

console.log(Math.ceil(74.5)); // 75
console.log(Math.ceil(4.1)); // 5
console.log(Math.ceil(55.321)); // 56
console.log(Math.ceil(-55.321)); // -55
console.log(Math.ceil(-0.3)); // -0
console.log(Math.ceil(-7.3)); // -7

Обратите внимание на округление отрицательных чисел — -7.3 округляется до -7, т.к. -7 больше чем -7.3.

Math.floor() — округление в меньшую сторону

Для округления в меньшую сторону есть отдельный метод floor(). Он также округляет до целого числа. Рассмотрим на тех же примерах:

console.log(Math.floor(74.5)); // 74
console.log(Math.floor(4.1)); // 4
console.log(Math.floor(55.321)); // 55
console.log(Math.floor(-55.321)); // -56
console.log(Math.floor(-0.3)); // -1
console.log(Math.floor(-7.3)); // -8

Math.round() — округление до целого числа

Данный метод округляет число до ближайшего целого (отбрасывает дробную часть) по правилам математики. То есть, если десятичная часть числа >= .5 (больше или равно), тогда округление срабатывает в большую сторону. Если меньше — тогда в меньшую сторону

Примеры:

console.log(Math.round(64.5)); // 65
console.log(Math.round(64.4)); // 64
console.log(Math.round(14.21)); // 14
console.log(Math.round(34.49)); // 34
console.log(Math.round(34.51)); // 35
console.log(Math.round(-3.6)); // -4
console.log(Math.round(-3.4)); // -3

toFixed() JS — округление до заданного количества чисел после запятой

Этот метод уже работает отдельно от объекта Math и он позволяет нам указать сколько чисел нужно оставить после запятой (до десятых, сотых, тысячных и т.д.). По умолчанию, если не передать никакие параметры, округление будет до целого числа. Округление также будет происходить по математическим правилам.

Давайте рассмотрим примеры с округлением до 2 знаков после запятой, как наиболее часто используемый в финансовых расчетах:

const num1 = 64;
const num2 = 64.4568;
const num3 = 13.894;
const num4 = -13.41568;

console.log(num1.toFixed(2)); // 64.00
console.log(num2.toFixed(2)); // 64.46
console.log(num3.toFixed(2)); // 13.89
console.log(num4.toFixed(2)); // -13.42

const num5 = 55.5;
const num6 = 55.4;

console.log(num5.toFixed()); // 56
console.log(num6.toFixed()); // 55

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

const num1 = 64.4568;
const num2 = num1.toFixed(2);

console.log(typeof num2, num2); // string "64.46"

Для того, чтобы получить число можно использовать такие варианты:

const num1 = 64.4568;
const num2 = +num1.toFixed(2);
console.log(typeof num2, num2); // number 64.46

const num3 = parseFloat(num1.toFixed(2));
console.log(typeof num3, num3); // number 64.46

const num4 = Number(num1.toFixed(2));
console.log(typeof num4, num4); // number 64.46