免责声明:截至2011年10月14日,为了清晰起见,完全重写
鉴于 JavaScript中的number
原语是IEEE 754 64位浮点(在其他语言中称为双),以及using floats to model currencies is a bad idea,是Money原型(JavaScript)或Coffeescript Class ,可以简化伪整数分数和字符串currency ISO 4217 code的使用代表货币可用?
^还有更好的方式来表达这一点。
我希望找到能够反映其他许多语言的常见设计模式的内容,包括整数原语。
例如,我熟悉ruby的money gem和python-money包,它们都实现了这种设计模式的变体。
理想情况下,寻找可与backbone.js和node.js配合使用的内容,但所有建议都值得赞赏。
编辑4 :据我所知,只要在每次操作后对数字调用roundDownOrUp ? floor : ceiling
的实现(并且在链式操作之间),一切都会起作用好像是在处理整数。
我看了How can I format numbers as money in JavaScript? 在那里我找到accounting.js和jQuery Globalize,它们都进行了漂亮的打印,但并不是为了模拟货币并对它们进行操作而设计的。
编辑1 :刚刚在JSorm Currency中找到了{42}知道的npm registry,但似乎没有包含任何针对浮动“ gotchas <的修复} EM>”。如果我有误读,请更正。
编辑2折叠成重写。
编辑3 :按照@RicardoTomasi的建议,使用node-bigint似乎是一个不错的选择。
答案 0 :(得分:11)
bigdecimal.js和node-bigint都具有任意精确度。
我会选择bigint。 bigdecimal是Java的BigDecimal的GWT版本,时钟频率为113kb,所以代码不是人们所说的可读。
更新: money.js刚刚发布,但它使用了javascript的原生号码,专注于货币转换。
答案 1 :(得分:0)
有一个很棒的$ .money类几乎可以在ku4js内核库中找到你想要的所有东西。您可以找到文档here。玩得开心! :{)}
答案 2 :(得分:0)
正在寻找一些东西来处理node.js中的钱并遇到这个问题,然后发现esmoney这是一个简单的钱计算器。 https://www.npmjs.com/package/es-money