Ruby 四舍五入到最近的十分之一?

Ruby 四舍五入到最近的十分之一?,ruby,math,rounding,Ruby,Math,Rounding,我需要凑到最近的十分之一。我需要的是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 如果您有可用的ActiveSupport,它会添加一个round方法: 3.14.round(1

我需要凑到最近的十分之一。我需要的是
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

如果您有可用的ActiveSupport,它会添加一个round方法:

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

Ruby的round方法可能会消耗精度:

10.38.round(1) # => 10.4

在本例中,1将使您四舍五入到最接近的十分之一。

要在Ruby中四舍五入到最接近的十分之一,您可以这样做

(数字/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

等等。

这轮的结果是最接近的十分之一,而不是像OP所问的那样,最接近的十分之一。我建议在1.9.3及以上()中给出这个答案。Ruby 1.8.7和更早版本只四舍五入到整数值().10.31。四舍五入(1)=>10.3,而不是OP要求的10.4。这就是我所做的,但我希望有一种原生的方法来做到这一点,比如四舍五入(1)或其他什么。对于两个小数位,你会如何做到这一点(比如金钱?)编辑:Derp。(3.191*100)。ceil/100.0给了我3.2。没错,3.20。只是没有显示额外的0。