也许标题令人困惑,但我会尝试用例子来解释:
给定精度为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中,有什么好方法可以做到这一点?
乘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]