我需要将数字四舍五入到最近的十分位数。我需要使用ceil
函数,但是需要保留小数点后一位。
例如:
10.38 would be 10.4
10.31 would be 10.4
10.4 would be 10.4
如果要舍入的数字超过十分之一,就应该向上舍入。
我正在运行 Ruby 1.8.7 版本。
一般来说,以下方法可行:
ceil(number*10)/10
那么在Ruby中应该是这样的:
(number*10).ceil/10.0
Ruby的round方法可以消耗精度:
10.38.round(1) # => 10.4
3.14.round(1) # => 3.1
3.14159.round(3) # => 3.142
源代码如下:
def round_with_precision(precision = nil)
precision.nil? ? round_without_precision : (self * (10 ** precision)).round / (10 ** precision).to_f
end
(number/10.0).ceil*10
例如:
(12345/10.0).ceil*10
# => 12350(10.33 + 0.05).round(1) # => 10.4
这个函数总是像ceil一样向上取整,简洁明了,支持精度,而且不需要使用/goofy/10 *10.0之类的东西。
例如:向最接近的百分位数四舍五入:
(10.333 + 0.005).round(2) # => 10.34
保留到千分位:
(10.3333 + 0.0005).round(3) # => 10.334
等等。