gpt4 book ai didi

java - BigDecimal 和金钱

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:30 25 4
gpt4 key购买 nike

我研究发现,在处理货币时,进行计算的最佳方法是使用 BigDecimal 类。

考虑到这一点,我正在编写一种代码,可以将各种类型的外币转换为美元,反之亦然(具体来说,收银机将外币转换为美元,计算找零和返回该金额以外币形式支付给客户)。

截至目前,许多方法都使用 double,其中两个将 int 作为参数用于计算美国货币。

问题:

既然我想在我的计算中使用 BigDecimal 类,我是否应该将所有进行涉及 double 计算的方法更改为 BigDecimal?

最佳答案

是的,您应该将所有 float 或 double 更改为采用整数、长整数或 BigDecimals

float 和 double 在财务计算中并不精确。使用 Money 是个好主意处理金额和货币的模式(它是 Quantity 的一种特殊类型)。为了维护一个可能以多种货币表示的货币列表,您实际上正在做的是一个 MoneyBag,一个 Money 的集合,然后可以对给定目标货币的所有值求和, CurrencyExchangeService(货币转换率也应存储为 BigDecimals)。

每次运算后都要根据所需的小数位数和四舍五入算法进行四舍五入。小数位数通常是 Currency 的属性(例如,查看 ISO 4217 );除非需要不同的数字(例如,在为汽油定价时)。

你绝对应该看看 Fowler 的例子;但我还创建了一个非常简单的单一货币 Money exercise 的类.它仅使用美元并四舍五入到小数点后两位;但它仍然是 future 扩展的良好基础。

关于java - BigDecimal 和金钱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com