2010-09-08 65 views
17

是否有任何方法可用来计算rails或ruby中的百分比?计算红宝石中的百分比?

编辑:

我要寻找一个功能如..

100000.percent(10)将返回我10000

100000是价值..(价值BigDecimal10 % ..

result = 100000 * 10/100

result = 10000 ..

+6

你是什么意思,“计算百分比”?您可以像使用其他语言一样使用乘法和除法:*/ – 2010-09-08 13:48:58

+0

是否有任何方法可用于此? – 2010-09-08 14:20:23

+0

没有内建方法,因为除法运算符通常用于此目的。为什么你需要一种超过正常分割的方法?如果你必须*有一个方法,写一个包装一个简单的除法运算符(见下面的几个例子)。 – bta 2010-09-08 18:23:05

回答

72

你是说像这样percentage = a/b*100

更新根据你新的描述:

class Numeric 
    def percent_of(n) 
    self.to_f/n.to_f * 100.0 
    end 
end 

# Note: the brackets() around number are optional 
p (1).percent_of(10) # => 10.0 (%) 
p (200).percent_of(100) # => 200.0 (%) 
p (0.5).percent_of(20) # => 2.5 (%) 

pizza_slices = 5 
eaten = 3 
p eaten.percent_of(pizza_slices) # => 60.0 (%) 

基于姆拉登的代码。

+0

@randomguy但是有没有任何方法可用于此? – 2010-09-08 14:19:54

+0

@ krunal no没有。 – Hugo 2010-09-08 14:53:26

+40

你可以使用':/'方法:'a.to_f.send(:/,b).send(:*,100)'此外,这个问题让我觉得':/' – 2010-09-08 14:57:51

2

有一种方法。这里是:

class Numeric 
    def percents 
    self * 100 
    end 
end 

0.56.percents 
=> 56.0 
+0

我想要一个类似于.. 100000.percent(10)的方法会返回我10000. – 2010-09-08 16:01:26

+5

@krunal然后你想'100000 * .1'。你不想要一个方法。 – meagar 2010-09-08 19:33:52

+0

@Maraden我最喜欢的答案就是这样:) – rmcsharry 2015-08-08 14:27:25