Есть ли класс денег для JavaScript?
Отказ от ответственности: полная переписывание для ясности с 10/14/2011
Данный примитив number
в JavaScript - это IEEE 754 64-разрядная плавающая запятая (известная в другие языки как двойные), а с использованием float для моделирования валют - это плохая идея, - прототип Money (JavaScript) или Coffeescript Class, который упрощает использование псевдоцелых центов и строки код валюты ISO 4217 для представления валюты доступной?
^ По-прежнему должен быть лучший способ сказать это.
Я надеюсь найти что-то, что отражает общий шаблон дизайна многих других языков, которые включают в себя целочисленный примитив.
В качестве примера я знаком с денежным камнем для рубина, а python-money, оба из которых реализуют варианты этого шаблона проектирования.
Идеально искать что-то, что будет хорошо сочетаться с backbone.js и node.js, но все предложения были оценены.
Редактирование 4: Насколько я могу судить, до тех пор, пока при вызове функции {t21 > вызывается функция roundDownOrUp ? floor : ceiling
) после каждой операции (& между цепными операциями), все будет работать так, как если бы речь шла о целых числах.
Старая информация, сохраненная для документирования истории вопроса.
Я читаю Как я могу форматировать числа в качестве денег в JavaScript?
где я нашел accounting.js и jQuery Globalize, который оба они довольно красивы, но не предназначены для моделирования валют и выполнения операций с ними.
Изменить 1: только что нашел JSorm Currency в реестр npm, который соответствует ISO 4217, но не содержит никаких исправлений для float "gotchas". Пожалуйста, исправьте, если я неправильно понял.
Отредактируйте 2, чтобы переписать.
Изменить 3: Похоже, что хорошим вариантом было бы использовать node-bigint, как было предложено @RicardoTomasi.
Ответы
Ответ 1
Оба bigdecimal.js и node-bigint имеют произвольную точность.
Я бы пошел с bigint. bigdecimal - это версия GWT для Java BigDecimal, работающая на частоте 113 КБ, поэтому код не является тем, что можно было бы назвать читаемым.
update: money.js только что был выпущен, но он использует собственный номер javascript и ориентирован на конвертацию валюты.
Ответ 2
Существует класс GREAT $.money, который делает почти все, что вы могли бы хотеть, из денег в библиотеке ku4js-kernel. Здесь вы можете найти документацию здесь. Повеселись!: {)}
Ответ 3
Ищете что-то для обработки денег в node.js и наткнулся на этот вопрос, а затем нашел esmoney, который является калькулятором прямых денег. https://www.npmjs.com/package/es-money