关于银行家算法的来历,大家可自行查阅,在此不做过多的赘述。
算法的基本规则如下:
1,舍去位的数值小于5时,直接舍去
2,舍去位的数值大于5时,进位后舍去
3,舍去位的数值等于5时,分俩中情况:5后面还有其他的数字(非0),则进位后舍去。若5后面是0(即5是最后一个数字),则根据5前一位的奇偶性来判断是否需要进位,奇数进位,偶数舍去
以上规则可汇成一句话:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶则舍去,五前为奇则进一
Java5以上使用银行家的舍入法则很简单。直接使用RoundingMode类提供的Round模式即可
public class Client {
public static void main(String[] args) {
//存款
BigDecimal d = new BigDecimal(99999);
//月利率,*3是季度利率
BigDecimal r = new BigDecimal(0.001875 * 3);
//计算利息 小数点后保留俩位,使用银行家算法
BigDecimal i = d.multiply(r).setScale(2, RoundingMode.HALF_EVEN);
System.out.println(i);
}
}