跳转至

银行家舍入

银行家舍入(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 时,有一半的概率进位,一半的概率舍去。而四舍五入算法在刚才的情况下一定会进位,导致进位的概率大于舍去的概率。


相关文章