Округление чисел в JavaScript
- Зачем округлять числа
- Math.round()
- Math.floor()
- Math.ceil()
- Math.trunc()
- Округление до нескольких знаков
- toFixed()
- Что выбрать
- Итого
В JavaScript числа часто получаются дробными. Например, после деления, расчета скидки или среднего значения.
let total = 1000;
let users = 3;
console.log(total / users);
Результат:
333.3333333333333
Такое число не всегда удобно показывать пользователю или использовать дальше. В таких случаях его округляют.
Зачем округлять числа
Округление нужно, когда дробная часть мешает или когда результат должен быть в понятном формате.
Например:
- показать цену с двумя знаками после точки;
- получить целое количество страниц;
- посчитать среднюю оценку;
- убрать дробную часть из результата деления.
Для разных задач используются разные способы округления.
Math.round()
Math.round() округляет число до ближайшего целого.
console.log(Math.round(4.2));
console.log(Math.round(4.5));
console.log(Math.round(4.8));
Результат:
4
5
5
Если дробная часть меньше 0.5, число округляется вниз. Если 0.5 или больше - вверх.
let rating = 4.6;
console.log(Math.round(rating));
Результат:
5
Math.floor()
Math.floor() округляет число вниз.
console.log(Math.floor(4.2));
console.log(Math.floor(4.8));
Результат:
4
4
Для положительных чисел это похоже на простое отбрасывание дробной части.
Например, если нужно узнать, сколько полных часов прошло:
let minutes = 135;
let hours = Math.floor(minutes / 60);
console.log(hours);
Результат:
2
Прошло два полных часа. Остальные минуты в этот результат не попали.
Math.ceil()
Math.ceil() округляет число вверх.
console.log(Math.ceil(4.2));
console.log(Math.ceil(4.8));
Результат:
5
5
Такой способ часто нужен, когда даже небольшой остаток требует еще одну единицу.
Например, нужно понять, сколько страниц получится, если на одной странице показывать по 10 товаров:
let products = 23;
let perPage = 10;
let pages = Math.ceil(products / perPage);
console.log(pages);
Результат:
3
Две страницы вместят только 20 товаров, поэтому нужна третья.
Math.trunc()
Math.trunc() просто отбрасывает дробную часть.
console.log(Math.trunc(4.2));
console.log(Math.trunc(4.8));
Результат:
4
4
С положительными числами результат похож на Math.floor(). Разница заметна на отрицательных числах.
console.log(Math.floor(-4.8));
console.log(Math.trunc(-4.8));
Результат:
-5
-4
Math.floor() округляет вниз по числовой оси, а Math.trunc() только убирает дробную часть.
Округление до нескольких знаков
Иногда нужно округлить не до целого числа, а до одного или двух знаков после точки.
Например, до двух знаков:
let price = 19.987;
let roundedPrice = Math.round(price * 100) / 100;
console.log(roundedPrice);
Результат:
19.99
Здесь мы сначала сдвинули точку на два знака вправо, округлили число, а потом вернули точку обратно.
Для одного знака после точки умножаем и делим на 10:
let value = 4.67;
console.log(Math.round(value * 10) / 10);
Результат:
4.7
Такой способ возвращает именно число, а не строку.
toFixed()
Метод toFixed() тоже округляет число до нужного количества знаков после точки, но возвращает строку.
let price = 19.987;
let result = price.toFixed(2);
console.log(result);
console.log(typeof result);
Результат:
19.99
string
toFixed() удобно использовать для вывода числа на экран.
let total = 1200;
console.log(total.toFixed(2));
Результат:
1200.00
Если результат нужно дальше использовать в вычислениях, помните, что это строка.
let price = 19.987;
let fixedPrice = price.toFixed(2);
console.log(fixedPrice + 1);
Результат:
19.991
Произошло склеивание строк. Если нужно число, результат можно преобразовать:
let price = 19.987;
let fixedPrice = Number(price.toFixed(2));
console.log(fixedPrice + 1);
Результат:
20.99
Что выбрать
Выбор зависит от задачи.
Math.round()- округлить до ближайшего целого.Math.floor()- всегда округлить вниз.Math.ceil()- всегда округлить вверх.Math.trunc()- отбросить дробную часть.toFixed()- подготовить число для вывода с нужным количеством знаков.
Для вычислений чаще удобнее методы Math, потому что они возвращают числа. Для красивого вывода часто подходит toFixed().
Итого
В JavaScript есть несколько способов округлить число.
Math.round()округляет до ближайшего целого.Math.floor()округляет вниз.Math.ceil()округляет вверх.Math.trunc()убирает дробную часть.- Для округления до двух знаков можно использовать
Math.round(number * 100) / 100. toFixed()возвращает строку, поэтому его удобно использовать для отображения результата.