如何使用最佳的RoundingMode将Java中的BigDecimal金钱计算四舍五入到小数点后两位?

问题描述 投票:0回答:1

假设我有一个 BigDecimal

amount
和另一个 BigDecimal
tax

我想进行以下计算:

amountWithoutTax = amount - tax

amount
tax
应该采用格式
YYYY.XX
(即精度为2)。所以这意味着
amountWithoutTax
也应该继承 2 的精度。

但是,在“不太可能”的情况下,amount

tax
具有3或更高的精度,
amountWithoutTax
也将继承3或更高的精度。
从四舍五入的角度来看,处理这种情况的适当方法是什么?就金钱而言,45.134 美元没有任何意义,因为没有任何硬币的价值低于 1 美分。

以下是我(我认为)使用 RoundingMode 类的选项:

    天花板
  1. 向下
  2. 地板
  3. HALF_DOWN
  4. HALF_EVEN
  5. 半上
  6. 向上
  7. 目前我们使用的是CEILING,所以它只是四舍五入。但是,说实话,我只是在这里随意猜测。我怎么知道处理这个问题的官方/正确方法是什么?

java bigdecimal quantitative-finance
1个回答
0
投票
以下是我(我认为)使用 RoundingMode 类的选项: …… 我怎么知道处理这个问题的官方/正确方法是什么?

询问你的团队,询问有财务决策权的利益相关者。不同的公司和部门对于舍入/截断有不同的政策。

45.134 美元没有意义,因为没有硬币

不正确。

在很多业务场景中,美元财务金额计算到小数点后第三位或第四位。事实上,在加油站您要支付每加仑 4.129 美元,比大标牌上的价格上涨了近一分钱(请阅读加油站的细则)。

© www.soinside.com 2019 - 2024. All rights reserved.