2012-01-31 12 views
34

Ruby kullanarak bir bölümün kalanını almaya çalışıyorum.Ruby'de bir bölümün kalan kısmını nasıl bulabilirim?

en biz son "10 bir kalanı 18" olmalıdır 11.

tarafından 208 bölmek için çalışıyoruz diyelim ... Ben sonuçta ne gerek olduğunu 10 olduğunu.

Şimdiye kadar elde ettiğim şey şu, ama bu kullanım durumunda boğuluyor (kalanın 0 olduğunu söyleyerek).

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

cevap

64

modülo operatörü:

> 208 % 11 
=> 10 
+2

HECK nasıl bu kadar karmaşık hale getirdim? Teşekkür ederim. – Shpigford

+9

Ben nitpick istemiyorum, ama bir operatör değil, 'Fixnum' sınıfının bir yöntemi:' >> 208.% (11) # => 10' –

+12

@MichaelKohl Teknik olarak tüm ruby ​​"operatörleri" yöntemleri . Örneğin, '' 5 + 5' '5. + (5)' için sadece kısaydı. – fbonetti

37

sadece tamsayı kısmını gerekiyorsa, / operatör veya Numeric#div yöntemi ile kullanım tamsayılar:

quotient = 208/11 
#=> 18 

quotient = 208.0.div 11 
#=> 18 

sadece gerekiyorsa Geri kalan % operatörünü veya Numeric#modulo yöntemini kullanın:

Her ikisine de ihtiyacınız varsa, Numeric#divmod yöntemini kullanın. Ayrıca ilgi

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

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

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

Numeric#remainder yöntemdir: Alıcı veya argüman ya bir şamandıra ise bu bile çalışır. Bunların tümü arasındaki farklar documentation for divmod'da görülebilir.

+6

+ 1 'divmod' nasıl gideceğimi. –

İlgili konular