Отказ от ответственности: полная переписывание для ясности с 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.