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

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

    Называется она 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, либо на странице самой библиотеки.
    Поделиться публикацией

    Похожие публикации

    Комментарии 10

      0
      мм. а как насчет валют обозначающихся двумя символами, типа канадского доллара ($1 CAD) и ему подобных?
      +3
      Не приходилось так сильно париться с форматированием чисел, поэтому пользовался вот такой штукой:
      "1231231.23".replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") // "1,231,231.23"

      Вроде работает и под свои нужды ее можно немного модифицировать
        0
        Спасибо, пригодилось! =)
        +1
        Вот еще библиотечка jquery-numberformatter. Возможно пригодится…
          0
          Да, но accounting.js может к этому еще со знаком валюты работать, что мне и нужно было — переставить перед числом, за числом…
          0
          советую
          www.decorplanit.com/plugin/

          всё тоже самое, плюс форматирование прямо в input
            0
            Форматирование ТОЛЬКО в input, вы хотели сказать.
            +1
            В некоторых культурах группировка по разрядам идёт не всегда по одному и тому же числу знаков. Например, индусы пишут 1 00 00 0000.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое