जवाबों:
यह पूर्णांक विभाजन कर रहा है। आप संख्याओं Float
को जोड़कर एक बना सकते हैं .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
अगर आप दो चर कि पूर्णांक होते हैं, उदाहरण के लिए विभाजित कर रहे हैं इस सवाल का जवाब बेहतर है a.to_f / b
। यदि आप सचमुच दो हार्ड-कोडेड पूर्णांकों को विभाजित कर रहे हैं (जो शायद अजीब है), तो उपयोग 9.0 / 5
करना ठीक है।
यह पूर्णांक विभाजन कर रहा है। आप to_f
फ्लोटिंग-पॉइंट मोड में चीजों को बल देने के लिए उपयोग कर सकते हैं :
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
यह भी काम करता है अगर आपके मान शाब्दिक के बजाय चर रहे हैं। एक मान को एक फ्लोट में परिवर्तित करना पूरी अभिव्यक्ति को फ्लोटिंग पॉइंट अंकगणित के लिए पर्याप्त करने के लिए पर्याप्त है।
वहाँ भी Numeric#fdiv
विधि है जो आप के बजाय उपयोग कर सकते हैं:
9.fdiv(5) #=> 1.8
आप माणिक mathn
मॉड्यूल शामिल कर सकते हैं ।
require 'mathn'
इस तरह, आप सामान्य रूप से विभाजन करने में सक्षम होने जा रहे हैं।
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
इस तरह, आपको सटीक विभाजन (वर्ग तर्कसंगत) मिलता है जब तक आप एक ऑपरेशन को लागू करने का निर्णय नहीं लेते हैं जो उदाहरण के लिए तर्कसंगत के रूप में व्यक्त नहीं किया जा सकता है Math.sin
।
बदले 5
के लिए 5.0
। आप पूर्णांक विभाजन प्राप्त कर रहे हैं।
यहां फिक्सनम # to_r का उल्लेख नहीं किया गया है, यह रूबी 1.9 के बाद से पेश किया गया था। यह Fixnum को तर्कसंगत रूप में परिवर्तित करता है। नीचे इसके उपयोग के उदाहरण दिए गए हैं। यह तब तक सटीक विभाजन भी दे सकता है जब तक कि उपयोग किए गए सभी नंबर फिक्सनम हैं।
a = 1.to_r #=> (1/1)
a = 10.to_r #=> (10/1)
a = a / 3 #=> (10/3)
a = a * 3 #=> (10/1)
a.to_f #=> 10.0
उदाहरण जहां एक तर्कसंगत संख्या पर संचालित एक फ्लोट परिणाम को फ्लोट करने के लिए कवर करता है।
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; end
विधि से गणना का परिणाम लौटाएगा, क्योंकि विधि कॉल में अंतिम अभिव्यक्ति वापसी मूल्य है।