- Округление числа в JS
- Math.ceil() — округление в большую сторону
- Math.floor() — округление в меньшую сторону
- Math.round() — округление до целого числа
- toFixed() JS — округление до заданного количества чисел после запятой
- Ваши вопросы и комментарии:
- Свежие записи
- Math.round()
- Синтаксис
- Параметры
- Описание
- Примеры
- Пример: использование метода Math.round()
- Пример: корректировка округления десятичных дробей
- Спецификации
- Совместимость с браузерами
- Смотрите также
- Function round #
- Syntax #
- Parameters #
- Returns #
- Throws #
- Examples #
Округление числа в 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
Ваши вопросы и комментарии:
Свежие записи
Копирование материалов разрешено только с ссылкой на источник Web-Dev.guru
2023 © Все права защищены.
Math.round()
Метод Math.round() возвращает число, округлённое к ближайшему целому.
Синтаксис
Параметры
Описание
Если дробная часть числа больше, либо равна 0,5, аргумент будет округлён до ближайшего большего целого. Если дробная часть числа меньше 0,5, аргумент будет округлён до ближайшего меньшего целого.
Поскольку метод round() является статическим методом объекта Math , вы всегда должны использовать его как Math.round() , а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).
Примеры
Пример: использование метода Math.round()
// Вернёт значение 20 x = Math.round(20.49); // Вернёт значение 21 x = Math.round(20.5); // Вернёт значение -20 x = Math.round(-20.5); // Вернёт значение -21 x = Math.round(-20.51); // Вернёт значение 1 (!) // Обратите внимание на ошибку округления из-за неточности арифметики с плавающей запятой // Сравните этот результат с результатом Math.round(1.005, -2) из следующего примера x = Math.round(1.005*100)/100;
Пример: корректировка округления десятичных дробей
// Замыкание (function() /** * Корректировка округления десятичных дробей. * * @param type Тип корректировки. * @param value Число. * @param exp Показатель степени (десятичный логарифм основания корректировки). * @returns Скорректированное значение. */ function decimalAdjust(type, value, exp) // Если степень не определена, либо равна нулю. if (typeof exp === 'undefined' || +exp === 0) return Math[type](value); > value = +value; exp = +exp; // Если значение не является числом, либо степень не является целым числом. if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) return NaN; > // Сдвиг разрядов value = value.toString().split('e'); value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); // Обратный сдвиг value = value.toString().split('e'); return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); > // Десятичное округление к ближайшему if (!Math.round10) Math.round10 = function(value, exp) return decimalAdjust('round', value, exp); >; > // Десятичное округление вниз if (!Math.floor10) Math.floor10 = function(value, exp) return decimalAdjust('floor', value, exp); >; > // Десятичное округление вверх if (!Math.ceil10) Math.ceil10 = function(value, exp) return decimalAdjust('ceil', value, exp); >; > >)(); // Округление к ближайшему Math.round10(55.55, -1); // 55.6 Math.round10(55.549, -1); // 55.5 Math.round10(55, 1); // 60 Math.round10(54.9, 1); // 50 Math.round10(-55.55, -1); // -55.5 Math.round10(-55.551, -1); // -55.6 Math.round10(-55, 1); // -50 Math.round10(-55.1, 1); // -60 Math.round10(1.005, -2); // 1.01 -- сравните этот результат с результатом Math.round(1.005*100)/100 выше // Округление вниз Math.floor10(55.59, -1); // 55.5 Math.floor10(59, 1); // 50 Math.floor10(-55.51, -1); // -55.6 Math.floor10(-51, 1); // -60 // Округление вверх Math.ceil10(55.51, -1); // 55.6 Math.ceil10(51, 1); // 60 Math.ceil10(-55.59, -1); // -55.5 Math.ceil10(-59, 1); // -50
Спецификации
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Math.abs()
- Math.ceil()
- Math.floor()
- Math.sign() Экспериментальная возможность
- Math.trunc() Экспериментальная возможность
Function round #
Round a value towards the nearest rounded value. For matrices, the function is evaluated element wise.
Syntax #
Parameters #
Parameter | Type | Description |
---|---|---|
x | number | BigNumber | Fraction | Complex | Array | Matrix | Number to be rounded |
n | number | BigNumber | Array | Number of decimals Default value: 0. |
Returns #
Throws #
Examples #
math.round(3.22) // returns number 3 math.round(3.82) // returns number 4 math.round(-4.2) // returns number -4 math.round(-4.7) // returns number -5 math.round(3.22, 1) // returns number 3.2 math.round(3.88, 1) // returns number 3.9 math.round(-4.21, 1) // returns number -4.2 math.round(-4.71, 1) // returns number -4.7 math.round(math.pi, 3) // returns number 3.142 math.round(123.45678, 2) // returns number 123.46 const c = math.complex(3.2, -2.7) math.round(c) // returns Complex 3 - 3i math.round([3.2, 3.8, -4.7]) // returns Array [3, 4, -5]