在开发的过程中除了我们常见的四舍五入舍入法之外还有一种常见的舍入法叫银行家舍入法,下面我们一起学习一下。
1、概述
银行家舍入法(Banker's Rounding),又称四舍六入五取偶(或四舍六入五留双)法,是由IEEE 754标准规定的浮点数取整算法,大部分的编程软件都使用这种方法。
2、规则
- 当需要修约的数字小于5时,该数字舍去。
- 当需要修约的数字大于5时,该数字进位。
- 当需要修约的数字等于5时,需要看5前面的数字。如果5前为奇数,则进位;如果5前为偶数(包括0,因为0也是偶数),则舍去5。如果5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。
3、如何转换为四舍五入
在BigDecimal设置小数点后的精度,使用默认的舍入模式就是银行家舍入法,但是可以通过指定RoundingMode
来调整舍入方法。对于四舍五入,可以使用RoundingMode.HALF_UP
。
BigDecimal bd = new BigDecimal("123.4567");
bd = bd.setScale(2, RoundingMode.HALF_UP);
System.out.println(bd); // 输出:123.46