关于BigDecimal.ROUND_HALF_EVEN银行家算法

我们知道四舍五入是有误差的:其误差值是舍入位的一半。我们以舍入运用最频繁的银行利息计算为例来阐述该问题。
我们知道银行的盈利渠道主要是利息差,从储户手里收拢资金,然后放贷出去,其间的利息差额便是所获得的利润。对一个银行来说,对付给储户的利息的计算非常频繁,人民银行规定每个季度末月的20日为银行结息日,一年有4次的结息日。而使用四舍五入的方法该银行就会大大亏本。

最近看书知道了这个算法银行家算法,这个算法在java5之后使用起来很简单,BigDecimal.ROUND_HALF_EVEN就可以得到,其算法的思想是:

四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。

 

在普通的项目中舍入模式不会有太多影响,可以直接使用Math.round方法,但在大量与货币数字交互的项目中,比如P2P,一定要选择好近似的计算模式,尽量减少因算法不同而造成的损失。

 

如果有问题或者建议请多提出交流         

you friend at CSND :)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值