是否有JavaScript的Money类?

Ale*_*ski 16 javascript currency node.js backbone.js

免责声明:截至2011年10月14日,为了清晰起见,完全重写

鉴于number JavaScript中的原语是IEEE 754 64位浮点(在其他语言中称为双精度),并使用浮点数来模拟货币是一个坏主意,是Money原型(JavaScript)Coffeescript类,可以简化使用伪整数美分和字符串货币ISO 4217代码表示可用的货币?

^还有更好的方式来表达这一点.

我希望找到能够反映其他许多语言的常见设计模式的东西,其中包括整数原语.

作为示例,我熟悉ruby 的money gempython-money包,它们都实现了这种设计模式的变体.

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

编辑4:据我所知,只要roundDownOrUp ? floor : ceiling在每次操作后调用Number的实现(&在链接操作之间),一切都会像处理整数那样起作用.


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

我读过如何在JavaScript中将数字格式化为金钱? 在那里我找到了accounting.jsjQuery Globalize,它们都做了漂亮的打印但不是为了模拟货币并用它们执行操作.

编辑1:刚刚在npm注册表中找到了知道ISO 4217的JSorm货币,但似乎没有包含浮动" 陷阱 "的任何修复.如果我有误读,请更正.

编辑2折叠成重写.

编辑3:看起来好的选择是使用@RicardoTomasi建议的node-bigint.

Ric*_*asi 11

无论bigdecimal.js节点BIGINT有任意精度.

我会选择bigint.bigdecimal是Java的BigDecimal的GWT版本,时钟频率为113kb,因此代码不是人们可以称之为可读的.

更新: money.js刚刚发布,但它使用javascript的原生号码,专注于货币转换.