1. ROUND_UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非 0 即进位。
  2. ROUND_DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。
  3. ROUND_CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于 ROUND_UP,若为负数,舍入行为类似于 ROUND_DOWNMath.round() 方法就是使用的此模式。
  4. ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于 ROUND_DOWN;若为负数,舍入行为类似于 ROUND_UP
  5. HALF_UP:最近数字舍入 (5 进)。这是我们最经典的四舍五入。
  6. HALF_DOWN:最近数字舍入 (5 舍)。在这里 5 是要舍弃的。
  7. HAIL_EVEN:银行家舍入法。

银行家舍入法:

  1. 舍去位小于5时, 直接舍去

  2. 舍去位大于5时, 直接进1后舍去

  3. 舍去位等于5时:

    1. 舍去位后面有数, 则直接进位1, 然后舍去

    2. 舍去位后面没数.

      1. 如果舍去位前为偶数, 则直接舍去不进位
      2. 如果舍去位前为奇数, 则进位后舍去

举例, 要舍去的位为粗体:

11.554 => 11.55 // 小于5

11.556 => 11.56 // 大于5

11.5551 => 11.556 // 舍去位后面有数, 进位

11.545 => 11.55 // 舍去位后面没数, 前为偶数, 直接舍去

11.555 => 11.56 // 舍去位后面没数, 前为奇数, 直接进位

Reference:

  1. http://cmsblogs.com/?p=54