对于“四舍五入”的概念,相信大家都熟悉,因为小学三四年级就已经接触过了,常规算法这儿从略。
但对于银行家算法,也许有不少人比较生疏。近期学习中遇到了,也了解一下算法可以概括为“四舍六入五取偶”。那就是:(假设对小数部分进行舍入的话),
待舍入的部分恰好为0.5000,则需要看前面一位数的奇偶性,奇数则入,偶数则舍。
举几个例子来描述一下,比如:
1.5000 -> 2
2.5000 -> 2
3.5000 -> 4
4.5000 -> 4
…… ……
那,为什么要这么做?
按常规的四舍五入算法
…… ……
[0.5,1.5) = 1
[1.5,2.5) = 2
[2.5,3.5) = 3
[3.5,4.5) = 4
[4.5,5.5) = 5
[5.5,6.5) = 6
…… ……
左闭右开会让恰好为n+0.5的数值全部入,而左开右闭则全部舍,所以,一般的四舍五入会
使数值有向一端的倾向性。数据太多,就会形成相对较大的偏差,所以,就有人提出银行家算法。
银行家算法
…… ……
(0.5,1.5) = 1
[1.5,2.5] = 2
(2.5,3.5) = 3
[3.5,4.5] = 4
(4.5,5.5) = 5
[5.5,6.5] = 6
…… ……
这样,隔一个n+0.5数值入,隔一个舍,从而使数值趋于均衡.
整体来看,数据不至于出现大的偏差