Форматирование чисел в JavaScript до двух знаков после запятой
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для форматирования числа с двумя десятичными знаками в JavaScript применяется метод toFixed(2)
.
const formatted = (123.456).toFixed(2); // "123.46"
Важно помнить, что метод toFixed() преобразует исходное число в строку.
Основы округления
Рассмотрим различные методы округления чисел в JavaScript:
Округление посредством toFixed()
Метод toFixed()
успешно справляется с задачей.
let num = 12.34567;
let rounded = num.toFixed(2);
console.log(rounded); // "12.35"
Однако стоит помнить, что метод toFixed возвращает строку, поэтому для дальнейших вычислений число нужно будет конвертировать обратно.
Округление с заданной точностью
Точность в данной теме играет ключевую роль. Предлагаем вашему вниманию следующий подход:
function precise_round(num, decimals) {
var sign = num >= 0 ? 1 : -1;
num = Math.abs(num);
return (Math.round((num * Math.pow(10, decimals)) + (sign * 0.0001)) / Math.pow(10, decimals)).toFixed(decimals);
}
Использование переменной sign
корректно округляет отрицательные числа.
Международное форматирование чисел
Intl.NumberFormat прекрасно подходит для международного форматирования чисел.
var formatted = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(12.3456789);
console.log(formatted); // "12.35"
Intl.NumberFormat позволяет сохранить точность и заданный формат чисел.
Неожиданные случаи округления
Процесс округления чисел в JavaScript может нести в себе неожиданные сюрпризы:
Вариантный метод округления (Math.round)
Сочетание Math.round и арифметических операций нивелирует недостатки toFixed.
function alternativeRounding(num) {
return (Math.round(num * 100) / 100).toFixed(2);
}
Такой подход может помочь избежать проблем, связанных с числами с плавающей точкой.
Визуализация
Процесс форматирования с помощью toFixed можно визуализировать, приводя аналогию с наливанием в кофе сливок.
let coffee = 3.14159;
let coffeeWithCreamer = coffee.toFixed(2); // 3.14
Кофе без сливок: ☕️ 3.14159 С сливками: ☕️ 3.14
Наслаждайтесь кофе! ☕️
Глубина базовых знаний
Если бы вы хотели углубиться в тему, следующие особенности могут быть полезными:
Важность производительности
В банковских операциях и регулярных вычислениях производительность методов округления имеет значимость.
Переменное количество десятичных знаков
В случае, когда требуются не только два десятичных знака:
function dynamicPrecisionRounding(num, precision) {
const factor = Math.pow(10, precision);
return (Math.round(num * factor) / factor).toFixed(precision);
}
Данный метод поддерживает переменное число десятичных знаков.
Полезные материалы
- Number.prototype.toFixed() – JavaScript | MDN — Как правильно использовать toFixed.
- How can I deal with floating point number precision in JavaScript? – Stack Overflow — Проблемы с точностью чисел.
- Intl.NumberFormat – JavaScript | MDN — Международное форматирование чисел.
- Is floating point math broken? – Stack Overflow — Особенности работы с числами с плавающей точкой.
- Numbers — Всё об числах в JavaScript.