TM Feed Хабрахабр Мегамозг Geektimes Тостер Мой круг Фрилансим

Спецпроекты: Конкурс авторовСтажировка в MOEXЭкономьте свое время

Разделы

Публикации Хабы Компании Пользователи Песочница

Q&A Вакансии

Спецпроекты

$27000 на хостинг Соберите свой стартап Экономьте свое время

Привет, Хабрапользователь. Кажется, ты используешь AdBlock. Хабрахабр
развивается и существует за счет доходов от рекламы. Добавь нас в исключения.
открытое письмо как отключить

barba @barba

Пользователь

63,0

карма

0,0

рейтинг

Профиль

6 Публикации

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

103 Избранное

12 Подписчики

27 октября 2011 в 14:31

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

JavaScript*

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

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

javascript

↑
+34
↓

16k

Добавить в избранное 164

barba @barba

карма

63,0

рейтинг 0,0

Реклама

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

+15

Кнопки социальных сетей, HTML 5, атрибут data и асинхронная загрузка javascript 63,4k 360 28

+86

Опасности необязательных аргументов в JavaScript 5,2k 91 67

+60

JavaScript 1.8 6,2k 94 34

Реклама

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

Сейчас

Неделя

Месяц

GSM-ловушки: ещё один привет от Большого Брата  24

Что там в Git 2.8? Push, grep, rebase, config и прочие штуки  2

Роберт Меткалф: папа EtherNet, отличный инженер и фиговый предсказатель (но за слова ответил)  1

Ubuntu. Русификация консоли в 2016 году  51

Семь вещей, которые нужно знать начинающему программисту  43

Аналитика по рынку виртуальной реальности  0

Angular 2 Beta, обучающий курс «Тур героев» часть 1  1

Критическая уязвимость iOS 9 позволяет обходить экран блокировки c помощью голосового помощника Siri  5

Списки действий: простой, гибкий, расширяемый ИИ  2

Одновременный анализ энергопотребления/производительности Android-устройств с помощью Intel VTune Amplifier и SoC Watch  2

Red Hat Enterprise Linux теперь бесплатен для разработчиков  23

В сеть утекли персональные данные 50 миллионов граждан Турции  88

Современная классика — браузер Vivaldi 1.0  518

Новшества C# 7  168

Релиз Lazarus 1.6  103

WPS Pixie Dust Attack — Взлом Wi-Fi сети за 5 минут. Описание уязвимости  23

Исповедь PHP программиста  195

Как сделать многослойную Parallax иллюстрацию на CSS & JavaScript  23

Что нового в Visual Studio 2015 для энтузиастов C#, Visual Basic и Linux  31

Сказ царя Салтана о потенциале лапласиана  29

Ubuntu интегрировали в Windows 10  568

Badoo перешли на PHP7 и сэкономили $1M  296

Американские математики обнаружили ранее неизвестное свойство простых чисел  117

Кризис ожирения сайтов  121

А нужно ли знать программисту алгоритмы?  346

Шесть подработок для ИТ-специалиста, за которые платят в долларах  61

Microsoft подтвердила слухи об интеграции подсистемы Linux в Windows 10  172

Один разработчик чуть не «сломал» пакетный менеджер NPM  176

Red Hat Enterprise Linux теперь бесплатен для разработчиков  23

NPM и left-pad: мы разучились программировать?  271

Вопросы по теме

Как сделать такие живые стрелочки вверх и вниз?  1

Есть ли уже готовый скрипт счетчика после отсчета которого можно добавить любое действие?  2

Как добавить текст в динамически добавленный tinymce?  1

Что быстрее, Array или Object?  2

Можно ли при помощи dojo плодить деревья через class?  0

Комментарии (9)

sajgak 27 октября 2011 в 14:58

0
↑ ↓

мм. а как насчет валют обозначающихся двумя символами, типа канадского доллара ($1 CAD) и ему подобных?

dark_ruby 27 октября 2011 в 16:44

+1
↑ ↓

в википедии C$ — так что
accounting.formatMoney(12345678, "$C");

HDg 27 октября 2011 в 19:59

+3
↑ ↓

Не приходилось так сильно париться с форматированием чисел, поэтому пользовался вот такой штукой:

"1231231.23".replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") // "1,231,231.23"

Вроде работает и под свои нужды ее можно немного модифицировать

jonie 27 октября 2011 в 20:10

+1
↑ ↓

Вот еще библиотечка jquery-numberformatter. Возможно пригодится…

barba 27 октября 2011 в 23:07

0
↑ ↓

Да, но accounting.js может к этому еще со знаком валюты работать, что мне и нужно было — переставить перед числом, за числом…

webdew 28 октября 2011 в 00:58

0
↑ ↓

советую
www.decorplanit.com/plugin/

всё тоже самое, плюс форматирование прямо в input

Dmitry_f 5 декабря 2011 в 06:58

0
↑ ↓

Форматирование ТОЛЬКО в input, вы хотели сказать.

kirilloid 28 октября 2011 в 13:52

+1
↑ ↓

В некоторых культурах группировка по разрядам идёт не всегда по одному и тому же числу знаков. Например, индусы пишут 1 00 00 0000.

vitvad 3 ноября 2011 в 23:27

0
↑ ↓

хм… это многое объясняет! разные примеры

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

Пометьте топик понятными вам метками, если хотите
Метки лучше разделять запятой. Например: общение, социальные сети, myspace.com, подростки, мердок
или закрыть

Что обсуждают

Сейчас

Вчера

Неделя

GSM-ловушки: ещё один привет от Большого Брата  25

Ubuntu. Русификация консоли в 2016 году  52

Семь вещей, которые нужно знать начинающему программисту  43

Сказ о том, как ГОСТ-шифрование диска в Android реализовывали  35

Галерея для ExtJS 6 с поддержкой touch событий  2

Ubuntu. Русификация консоли в 2016 году  51

Семь вещей, которые нужно знать начинающему программисту  43

GSM-ловушки: ещё один привет от Большого Брата  24

Пять причин, почему мы отказались от русского перевода конференции “Piter Py”  21

Расширенный скелет проекта PHPixie с аутентификацией и админкой  22

Современная классика — браузер Vivaldi 1.0  518

На каком фреймворке вы будете писать PHP приложение в 2016 году?  239

Исповедь PHP программиста  195

Новшества C# 7  168

Microsoft ♥ Open Source — открытие сайта, посвященного истории дружбы  145

Ubuntu интегрировали в Windows 10  568

Современная классика — браузер Vivaldi 1.0  518

Минусы Битрикса, или Битрикс глазами программиста  494

C++17, который мы потеряли  391

А нужно ли знать программисту алгоритмы?  346

Интересные публикации

Хабрахабр

Гиктаймс

Мегамозг

Алюмо-иттриевый лазер с легированием неодимом  5

Запуск SpaceX CRS-8 с посадкой ступени Falcon 9 на плавучий космопорт — в пятницу в 23:43 по московскому времени  9

Разработчику Великого Китайского Файервола пришлось показать китайским студентам, как обойти защиту при помощи VPN  26

Одновременный анализ энергопотребления/производительности Android-устройств с помощью Intel VTune Amplifier и SoC Watch  2

Аналитика по рынку виртуальной реальности  0

Новые динамические объекты и поддержка JSON в InterSystems Caché  0

Apple поставит миллиардный iPhone в этом году  0

Apple Pay станет доступен на мобильных веб-сайтах, а также будет полноценно запущен в РФ к концу этого года  7

Samsung подала заявку на патент умных контактных линз  16

Отчет о результатах «Моего круга» за март 2016  0

Роберт Меткалф: папа EtherNet, отличный инженер и фиговый предсказатель (но за слова ответил)  1

Мобильность как тренд: почти 50% российских IT-специалистов согласны переехать в другие регионы страны ради карьеры  0

Выбираем актуальную экшн-камеру c разрешением 2-4к за 100$  23

Angular 2 Beta, обучающий курс «Тур героев» часть 1  1

Что там в Git 2.8? Push, grep, rebase, config и прочие штуки  2

Все светодиодные лампы IKEA  48

Роскомнадзор не в состоянии модерировать модерацию новостных сервисов  21

Проект «Око» ч.17  10

От металлического кремния до SSD: как создаются твердотельные накопители OCZ  23

RAML 1.0: обзор нововведений  11

Списки действий: простой, гибкий, расширяемый ИИ  2

Google выключает навсегда контроллеры Revolv у пользователей  80

Его зовут Bot. Statsbot  17

Не бросаем деньги на ветер: как правильно анализировать эффективность лидогенерации в Google Adwords и Яндекс.Директ  0

Кризис жанра: демпинг на биржах контента  7

«Его величество» Безос Первый (часть 2)  0

Чек-листы для Google AdWords и Яндекс.Директ и ещё пара секретов  0

Анатолий Чубайс — о новой стратегии «Роснано», о реформе институтов инноваций, об эффективных способах инвестирования  0

Советы основателя. Александр Оникиенко, CEO TakeItTaxi  1

Завершился международный вебинар «Как создать платежный бизнес в Европе»  0

Вакансии

Digital-стратег / Аккаунт менеджер
Москва Полный рабочий день от 80 000 руб.

PHP разработчик
Москва Полный рабочий день от 40 000 до 80 000 руб.

Front-End/UX Developer
Москва Полный рабочий день от 100 000 руб.

Технический директор
Москва Полный рабочий день от 150 000 до 180 000 руб.

Ruby разработчик
Москва Полный рабочий день от 120 000 руб.

Создать резюме Разместить вакансию

Заказы

Соединить встраиваемый Linux и настольный через bluetooth socket
08.04.2016 0 откликов

Оптимизировать код роутеров express
08.04.2016 1 отклик

Подправить верстку для princexml
08.04.2016 0 откликов Цена договорная

Разработчик Android в проект социального мобильного приложения
07.04.2016 0 откликов

Javascript для нормальной загрузки страницы
07.04.2016 0 откликов

Зарегистрироваться Разместить заказ

Войти

Регистрация

Разделы

Публикации

Хабы

Компании

Пользователи

Q&A

Песочница

Инфо

О сайте

Правила

Помощь

Соглашение

Услуги

Реклама

Спецпроекты

Тарифы

Контент

Вебинары

Разное

Приложения

Тест-драйв

Помощь стартапам

Работа в IT

© TM

Служба поддержки

Мобильная версия