在java中,哪种舍入模式用于货币操作?

2022-08-31 20:58:30

我已经在java网站上阅读了用于货币。http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.htmlBigDecimal

但是,我们应该使用哪种舍入模式呢?这是最合适和最广泛的我们


答案 1

没有“正确”模式,这取决于商业案例。例子:

  • 在计算年税时,分数通常被切断()。RoundingMode.FLOOR
  • 在计算奖金时,您可能希望始终向客户舍入()。RoundingMode.CEILING
  • 对于账单上的税款,您通常会四舍五入HALF_UP
  • 在进行复杂的财务模拟时,您根本不想四舍五入。

RoundingMode的文档包含了很多不同模式如何工作的示例。

为了得到更好的答案,你必须告诉我们你想实现的目标。

也就是说,这是在Java中使用的正确类型,因为它可以保留任何精度,并且它允许您选择最适合您的情况的舍入模式。BigDecimal


答案 2

大多数时候是货币的唯一有效选择。但舍入策略的选择并不那么明显。BigDecimal

默认值为 HALF_EVEN 这恰好是一个不错的选择。此算法称为银行家舍入(请参阅此处的讨论)。

另一种常见的策略是HALF_UP它更直观,但具有稍差的统计特征。

另请注意,在许多情况下(特别是在银行和保险业),舍入策略将由业务需求决定,对于各种用例通常不同。


推荐