我研究过并发现,在处理货币时,最好的计算方法是BigDecimal上课.
考虑到这一点,我正在制定一个代码,将各种类型的外币兑换成美元,反之亦然(具体而言,是一种取货币并将其兑换成美元货币的现金登记,计算变更并将此金额返还给外币客户).
截至目前,许多方法都使用double,其中两个int作为参数用于计算美元.
题:
由于我想在计算中使用BigDecimal类,我是否应该将所有涉及双精度计算的方法更改为BigDecimal?
是的,您应该更改所有浮点数或双精度数以采用整数、长整型或BigDecimals.
浮点数和双精度数对于财务计算来说并不精确。使用该Money模式来处理金额和货币是一个非常好的主意(它是 的一种特殊类型Quantity)。为了维护可能以多种货币表示的货币列表,您实际上要做的是 a MoneyBag,然后Money可以将给定目标货币和 a 的所有值求和CurrencyExchangeService(货币兑换率也应存储为BigDecimals)。
每次运算后应根据所需的小数位数和舍入算法进行舍入。小数位数通常是 的属性Currency(例如,参见ISO 4217);除非需要不同的数字(例如,在定价汽油时)。
你绝对应该看看福勒的例子;Money但我还为练习创建了一个非常简单的单一货币类。它仅使用美元并四舍五入到小数点后两位;但它仍然是未来扩展的良好基础。
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |