银行家舍入-四舍六入五取偶

银行家舍入

所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。

具体规则如下:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一

四舍五入

四舍五入,小于5的数字被舍去,大于等于5的数字进位加一。由于所有位上的数字都是自然计算出来的,按照概率计算可知,被舍入的数字均匀分布在0到9之间,下面以10笔存款利息计算作为模型,以银行家的身份来思考这个算法:

  1. 四舍:舍弃的数值:0.000、0.001、0.002、0.003、0.004,因为是舍弃,对银行家来说,就是不用付款给储户的,那每舍弃一个数字就会赚取相应的金额:0.000、0.001、0.002、0.003、0.004
  2. 五入:进位的数值:0.005、0.006、0.007、0.008、0.009,因为是进位,对银行家来说,每进一位就会多付款给储户,也就是亏损了,那亏损部分就是其对应的10进制补数:0.005、0.004、0.003、0.002、0.001

因为舍弃和进位的数字是在0到9之间均匀分布的,所以对于银行家来说,每10笔存款的利息因采用四舍五入而获得的盈利是:
0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005 也就是说,每10笔的利息计算中就亏损0.005元,即每笔利息计算损失0.0005元。

精确四舍五入

1
2
3
function fomatFloat(x, digits) {
return Math.round(x * Math.pow(10, digits)) / Math.pow(10, digits);
}