当前位置:  开发笔记 > 编程语言 > 正文

用Java表示货币价值

如何解决《用Java表示货币价值》经验,为你挑选了5个好方法。

我知道BigDecimal是用于在Java中表示货币价值的推荐最佳实践.你用什么?您是否更喜欢使用更好的库?



1> ninesided..:

BigDecimal一路走来.我听说有些人创建他们自己的CashMoney类,用货币封装现金价值,但在皮肤下它仍然是一个BigDecimal,可能有BigDecimal.ROUND_HALF_EVEN四舍五入.

编辑:正如Don在他的回答中提到的那样,有一些像timeandmoney这样的开源项目,虽然我赞扬他们试图阻止开发人员不得不重新发明轮子,但我对前alpha库的使用还不够它在生产环境中.此外,如果你在引擎盖下挖掘,你会发现它们BigDecimal也在使用.


+1.我们决定添加一个消耗货币的容器类.当在表格中呈现货币值时,这会派上用场.
@ninesided给出了一个很好的例子,说明为什么滚动自己是一个糟糕的答案."哦,顺便说一句,它不适用于$ CURRENCY_X." 这是一个好兆头,它也不适用于许多其他货币.

2> 小智..:

对于通过搜索引擎到达这里的人来说,了解JodaMoney非常有用:http://www.joda.org/joda-money/.


+1看起来很有趣,很高兴看到引擎盖下的"BigDecimal"!

3> orbfish..:

我不是在这里表达我的观点,但是有一些很好的论据反对BigDecimal,有人应该抛出:

http://lemnik.wordpress.com/2011/03/25/bigdecimal-and-your-money/



4> Bashar..:

我之前遇到的一个方便的库是Joda-Money库.它的一个实现确实基于BigDecimal.它基于ISO-4217货币规范,可以支持自定义货币列表(通过CVS加载).

该库包含少量文件,如果需要修改,可以快速完成.Joda-Money是在Apache 2.0许可下发布的.



5> Bill K..:

如果你只是使用美元和美分,我会使用一个长(偏移2位小数).如果您需要更多细节,可以选择大小数.

无论哪种方式,我可能会扩展类以使用正确格式的.toString(),并作为放置其他可能出现的方法的地方(如果小数点是非长的,则乘法和除法会出错不调整)

此外,如果您使用定义自己的类和接口,那么您可以随意替换实现.


我同意 - 任何大量的美元(或者如果你在日元跟踪钱)你都应该使用BigDecimal - 但即便如此,我也会认真考虑使用容器类.我认为大多数编程复杂性来自于没有定义围绕集合和内部类型的小型简单类的人.
请注意,即使很长时间也可能太短,无法在美国联邦债券中持有美国联邦债券......如果不是现在就在几年之内.
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有