Pull to refresh

accounting.js — форматирование чисел и валют

Reading time2 min
Views28K
В одном из проектов мне понадобилось реализовать переключение валют с последующим реформатированием значений денежных сумм, встречающихся на странице.Как это у меня часто получается, я это реализовал и через пару недель наткнулся на небольшую библиотечку, которая позволяет довольно удобно выполнить именно эту операцию.

Называется она accounting.js.

Библиотека может выполнять три действия по форматированию:
  • Форматирование числа (formatNumber)
  • Форматирование денежного значения со знаком валюты (formatMoney)
  • И форматирование денежных значений для отображения их в одну колонку (formatColumn)

По-умолчанию в настройках стоит формат, принятый в Америке: валюта — знак доллара, разделитель целой и дробной части — точка, разделитель тысячных разрядов — запятая.

formatNumber()


Базовая функция, которой можно передать число или массив чисел и на выходе получить число (или массив) с отделенными тысячними разрядами и дробной частью заданной точности и разделителем дробной части — запятой.

Настройки по-умолчанию:
accounting.formatNumber(5318008); // 5,318,008 

Три знака после запятой, отделение тысяч пробелом, дробная часть отделяется запятой:
accounting.formatNumber(9876543.21, 3, " ", ","); // 9 876 543,210 

formatMoney()


Форматирует номера в виде денежных сумм. Кроме разделителей тысяч, точности и разделителя дробной части еще устанавливает знак валюты в соответствии с шаблоном.

По-умолчанию:
accounting.formatMoney(12345678); // $12,345,678.00 

Знак валюты — RUR, точность — два знака, тысячи — пробел, дробные — запятая, обозначение валюты после числа через пробел:
accounting.formatMoney(4999.99, "RUR", 2, " ", ",", "%v %s"); //4 999,99 RUR 

formatColumn()


Функции передается массив чисел и она изменяет этот массив, дополняя числа пробелами исходя из того, сколько знаков в максимальном числе и ставит знак валюты либо до дополненного числа, либо после, в соответствии с шаблоном. Нужно это чтобы красиво отображать суммы в таблице.
accounting.formatColumn([123, 12345], "$ ",  0); // ["$    123", "$ 12,345"] 

Можно попробовать различные комбинации опций в действии в небольшом тесте на jsFiddle, либо на странице самой библиотеки.
Tags:
Hubs:
+34
Comments10

Articles