2012-01-31 7 views
34

मैं रूबी का उपयोग करके एक विभाजन का शेष प्राप्त करने की कोशिश कर रहा हूं।रूबी में एक विभाजन का शेष कैसे खोजें?

मान लीजिए कि हम से 11.

208 विभाजित करने के लिए अंतिम "10 के शेष के साथ 18" होना चाहिए की कोशिश कर रहे हैं ... क्या मैं अंत में जरूरत है कि 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

मैं नाइटपिक नहीं करना चाहता, लेकिन यह ऑपरेटर नहीं है, लेकिन 'फिक्सनम' वर्ग का एक तरीका: '>> 208।% (11) # => 10' –

+12

@ माइकलकोहल तकनीकी रूप से सभी रूबी" ऑपरेटर "विधियां हैं । उदाहरण के लिए, '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' यह है कि मैं कैसे जाना होगा। –

संबंधित मुद्दे