在Ruby中舍入到最接近的整数或最接近.5

时间:2012-07-27 02:05:04

标签: ruby rounding

也许标题令人困惑,但我会尝试用例子来解释:

给定一个精度= 2的浮点数,我希望能够将其舍入到其闭合整数或最接近的.5。例子:

Given: 4.12 --> 4
       4.24 --> 4
       4.25 --> 4.5
       4.33 --> 4.5
       4.53 --> 4.5 
       4.65 --> 4.5 
       4.75 --> 5
       4.84 --> 5

在Ruby中执行此操作的好方法是什么?

1 个答案:

答案 0 :(得分:34)

乘以2,舍入,除以2.

[4.12, 4.24, 4.25, 4.33, 4.53, 4.65, 4.75, 4.84].map do |x|
  r = (x * 2).round / 2.0
  r.to_i == r ? r.to_i : r
end

=> [4, 4, 4.5, 4.5, 4.5, 4.5, 5, 5]