银行家舍入¶
银行家舍入(Banker's rounding)也叫四舍六入五取偶(Rounding half to even),是 IEEE 754 规定的浮点数取整算法。大部分编程语言的 round()
用的都是这个。
规则¶
当被修约的数字
- 小于 5,直接舍去
- 大于 5,直接进位
- 等于 5
- 若 5 后面有数字,直接进位
- 若 5 后面全为 0
- 若 5 前面的数字为奇数,则进位
- 若 5 前面的数字为偶数,则舍去
例子
- \(9.8249=9.82, 9.82671=9.83\)
- \(9.835=9.84, 9.8351=9.84\)
- \(9.825=9.82, 9.82501=9.83\)
优势¶
银行家舍入算法要更加公平。当被修约的数字为 5 且后面恰好全是 0 时,有一半的概率进位,一半的概率舍去。而四舍五入算法在刚才的情况下一定会进位,导致进位的概率大于舍去的概率。
相关文章