11

タイトルがわかりにくいかもしれませんが、例を挙げて説明します。

精度=2のfloatが与えられた場合、最も近い整数または最も近い.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でこれを行うための良い方法は何でしょうか?

4

1 に答える 1

36

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]
于 2012-07-27T02:39:04.613 に答える