2012-01-31 5 views
34

私はRubyを使用して部門の残りの部分を取得しようとしています。Rubyで部門の残りの部分を見つけるには?

のは、我々は最終的には「10の残りの部分と18」である必要があります11

で208を分割しようとしているとしましょう...私は最終的に必要なものという10です。

ここまでは私が今までに得たことですが、このユースケースでは、残りの部分は0です。

division = 208.to_f/11 
rounded = (division*10).ceil/10.0 
remainder = rounded.round(1).to_s.last.to_i 

答えて

64

剰余演算子:

> 208 % 11 
=> 10 
+2

私はそれをとても複雑にしましたか?ありがとうございました。 – Shpigford

+9

ニックピッチしたくないのですが、それは演算子ではありませんが、 'Fixnum'クラスのメソッドです:' >> 208。%(11)#=> 10' –

+12

@MichaelKohl技術的にすべてのルビ "演算子" 。例えば、 '5 + 5'は' 5。+(5) 'の略語です。 – fbonetti

37

あなただけの整数部分が必要な場合は、/オペレータ、またはNumeric#div方法で整数を使用します。あなただけが必要な場合

quotient = 208/11 
#=> 18 

quotient = 208.0.div 11 
#=> 18 

オペレータまたはNumeric#moduloメソッドを使用してください。

modulus = 208 % 11 
#=> 10 

modulus = 208.0.modulo 11 
#=> 10.0 

両方が必要な場合は、Numeric#divmodメソッドを使用してください。受信機または引数のいずれかが浮動小数点数である場合、これでも動作します:

quotient, modulus = 208.divmod(11) 
#=> [18, 10] 

208.0.divmod(11) 
#=> [18, 10.0] 

208.divmod(11.0) 
#=> [18, 10.0] 

また、関心のNumeric#remainder方法です。これらすべての違いは、documentation for divmodに記載されています。

+6

+ 1「divmod」はどうやって行くのですか? –

関連する問題