Форматирование чисел в JavaScript до двух знаков после запятой

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для форматирования числа с двумя десятичными знаками в JavaScript применяется метод toFixed(2).

JS
Скопировать код
const formatted = (123.456).toFixed(2); // "123.46"

Важно помнить, что метод toFixed() преобразует исходное число в строку.

Кинга Идем в IT: пошаговый план для смены профессии

Основы округления

Рассмотрим различные методы округления чисел в JavaScript:

Округление посредством toFixed()

Метод toFixed() успешно справляется с задачей.

JS
Скопировать код
let num = 12.34567;
let rounded = num.toFixed(2);
console.log(rounded); // "12.35"

Однако стоит помнить, что метод toFixed возвращает строку, поэтому для дальнейших вычислений число нужно будет конвертировать обратно.

Округление с заданной точностью

Точность в данной теме играет ключевую роль. Предлагаем вашему вниманию следующий подход:

JS
Скопировать код
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 прекрасно подходит для международного форматирования чисел.

JS
Скопировать код
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.

JS
Скопировать код
function alternativeRounding(num) {
  return (Math.round(num * 100) / 100).toFixed(2);
}

Такой подход может помочь избежать проблем, связанных с числами с плавающей точкой.

Визуализация

Процесс форматирования с помощью toFixed можно визуализировать, приводя аналогию с наливанием в кофе сливок.

JS
Скопировать код
let coffee = 3.14159;
let coffeeWithCreamer = coffee.toFixed(2); // 3.14

Кофе без сливок: ☕️ 3.14159 С сливками: ☕️ 3.14

Наслаждайтесь кофе! ☕️

Глубина базовых знаний

Если бы вы хотели углубиться в тему, следующие особенности могут быть полезными:

Важность производительности

В банковских операциях и регулярных вычислениях производительность методов округления имеет значимость.

Переменное количество десятичных знаков

В случае, когда требуются не только два десятичных знака:

JS
Скопировать код
function dynamicPrecisionRounding(num, precision) {
  const factor = Math.pow(10, precision);
  return (Math.round(num * factor) / factor).toFixed(precision);
}

Данный метод поддерживает переменное число десятичных знаков.

Полезные материалы

  1. Number.prototype.toFixed() – JavaScript | MDN — Как правильно использовать toFixed.
  2. How can I deal with floating point number precision in JavaScript? – Stack Overflow — Проблемы с точностью чисел.
  3. Intl.NumberFormat – JavaScript | MDN — Международное форматирование чисел.
  4. Is floating point math broken? – Stack Overflow — Особенности работы с числами с плавающей точкой.
  5. Numbers — Всё об числах в JavaScript.