是否有JavaScript的Money类?

时间:2011-10-13 01:51:01

标签: javascript node.js backbone.js currency

免责声明:截至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 gempython-money包,它们都实现了这种设计模式的变体。

理想情况下,寻找可与backbone.jsnode.js配合使用的内容,但所有建议都值得赞赏。

编辑4 :据我所知,只要在每次操作后对数字调用roundDownOrUp ? floor : ceiling的实现(并且在链式操作之间),一切都会起作用好像是在处理整数。


保留旧信息以记录问题的历史。

我看了How can I format numbers as money in JavaScript? 在那里我找到accounting.jsjQuery Globalize,它们都进行了漂亮的打印,但并不是为了模拟货币并对它们进行操作而设计的。

编辑1 :刚刚在JSorm Currency中找到了{42}知道的npm registry,但似乎没有包含任何针对浮动“ gotchas <的修复”。如果我有误读,请更正。

编辑2折叠成重写。

编辑3 :按照@RicardoTomasi的建议,使用node-bigint似乎是一个不错的选择。

3 个答案:

答案 0 :(得分:11)

bigdecimal.jsnode-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