दिलचस्प पोस्ट
पुनः लोड पर टुकड़े ताज़ा करें कंसोल (। Com) () सतर्क () से बेहतर क्यों माना जाता है? git difftool, सभी diff फ़ाइलों को तुरंत खोलें, धारावाहिक में नहीं एजेक्स और पीएचपी को डेटाबेस में एकाधिक फ़ॉर्म इनपुट दर्ज करने के लिए जांचें कि क्या स्ट्रिंग जेएस में एक regex से मेल खाता है जावा में डिफ़ॉल्ट कन्स्ट्रक्टर और उत्तराधिकार मैं ScheduledThreadPoolExecutor, टाइमरटैक्स, या हैंडलर कहां बना सकता हूं? DbContext को कैसे रीफ़्रेश करें कैसे एक अजगर शब्दकोश से एक कुंजी को दूर करने के लिए? जेकाइल ब्लॉग में टैग का समर्थन करने का एक आसान तरीका एक बड़े स्थानीय ऑर्नाम को मेरे कार्यक्रम को क्यों क्रैश किया जाता है? अजगर को स्थानीय समय में यूटीसी युगिक टाइमस्टैम्प में परिवर्तित करना मूल (C ++) कोड से टेक्स्ट कैसे लौटाया जाए UIWebView के भीतर HTML और स्थानीय चित्रों का उपयोग करना स्थैतिक आयात को शामिल करने के लिए एक्लिप्स ऑप्टीमाइज़ आयात

क्यों रूबी में विभाजित दशमलव मान के बजाय एक पूर्णांक है?

उदाहरण के लिए:

9 / 5 #=> 1 

लेकिन मुझे उम्मीद है कि 1.8 मैं सही दशमलव (गैर-पूर्णांक) परिणाम कैसे प्राप्त करूं? यह 1 पर वापस क्यों लौट रहा है?

वेब के समाधान से एकत्रित समाधान "क्यों रूबी में विभाजित दशमलव मान के बजाय एक पूर्णांक है?"

यह पूर्णांक विभाजन कर रहा है आप जोड़कर एक Float संख्या में से एक बना सकते हैं .0 :

 9.0 / 5 #=> 1.8 9 / 5.0 #=> 1.8 

यह पूर्णांक विभाजन कर रहा है आप को फ्लोटिंग पॉइंट मोड में चीजों पर बाध्य करने के लिए to_f का उपयोग कर सकते हैं:

 9.to_f / 5 #=> 1.8 9 / 5.to_f #=> 1.8 

यह भी काम करता है यदि आपके मूल्यों को शाब्दिक शब्दों के बजाय चर कहा जाता है। फ्लोटिंग पॉइंट अंकगणित के लिए संपूर्ण अभिव्यक्ति को मजबूर करने के लिए एक वैल्यू को फ्लोट पर परिवर्तित करना पर्याप्त है।

इसमें Numeric#fdiv विधि भी है जिसे आप इसके बजाय उपयोग कर सकते हैं:

 9.fdiv(5) #=> 1.8 

आप इसे irb के साथ देख सकते हैं:

 $ irb >> 2 / 3 => 0 >> 2.to_f / 3 => 0.666666666666667 >> 2 / 3.to_f => 0.666666666666667 

आप रूबी 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 को बदलें। आप पूर्णांक विभाजन प्राप्त कर रहे हैं।

Fixnum # to_r यहाँ उल्लेख नहीं है, यह ruby ​​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