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


282

एक डबल पाने के लिए मैं दो पूर्णांकों को कैसे विभाजित करूं?


10
यह मानते हुए कि एक साक्षात्कार में पूछा गया था - पूर्णांक विभाजन हमेशा पूर्णांक में परिणाम होता है। आपको नीचे दिखाए गए जैसे टाइप कास्ट का उपयोग करना चाहिए।
शेष

2
विभिन्न प्रकार के विभाजन: पूर्णांक, फ़्लोटिंग-पॉइंट, दशमलव-डिस्क्लेस्ड क्यों पूर्णांक विभाजन में c # एक पूर्णांक देता है लेकिन एक फ्लोट नहीं?
माइकल फ्रीजिम

जवाबों:


460

आप संख्याएँ डालना चाहते हैं:

double num3 = (double)num1/(double)num2;

नोट: यदि C # में कोई भी तर्क एक है double, तो एक doubleविभाजन का उपयोग किया जाता है जिसके परिणामस्वरूप a double। तो, निम्नलिखित भी काम करेगा:

double num3 = (double)num1/num2;

अधिक जानकारी के लिए देखें:

डॉट नेट पर्ल्स


3
पता नहीं अगर यह C # में समान है, लेकिन C को आपको पहले कास्ट करने की आवश्यकता है - यह स्वचालित रूप से डबल / int डबल बना देगा।
paxdiablo

4
@ पैक्स, यदि C या C # में कोई भी आर्गन एक डबल है, तो एक डबल डिवाइड का उपयोग किया जाता है (परिणामस्वरूप एक डबल)।
स्ट्रैजर

32
ऐसा न करने के लिए सावधान रहें: - double num3 = (double)(num1/num2);। यह आपको पूर्णांक विभाजन के परिणाम का दोहरा प्रतिनिधित्व देगा!
लोनली कोडर

मान लें कि आपको अतिरिक्त परिशुद्धता की आवश्यकता नहीं है, क्या doubleइसके बजाय कास्ट करने का कोई कारण है float? मैं प्रश्न कॉल देख सकता हूं, doubleलेकिन मैं उत्सुक हूं।
काइल डेलाने

@KyleDelaney सिर्फ C # में कारण हम सामान्य रूप से उपयोग करते हैं doubleऔर नहीं float। जब आप किसी चर की तरह लिखते हैं var a = 1.0;, तो यह 1.0 हमेशा होता है double। मुझे लगता है कि यह मुख्य कारण है।
दोपहर

31

@ नूह के जवाब को लागू करना

अधिक सटीक करने के लिए आप दशमलव में डाल सकते हैं:

(decimal)100/863
//0.1158748551564310544611819235

या:

Decimal.Divide(100, 863)
//0.1158748551564310544611819235

डबल का प्रतिनिधित्व 64 बिट्स आवंटित करते हुए किया जाता है जबकि दशमलव 128 का उपयोग करता है

(double)100/863
//0.11587485515643106

"सटीक" की गहराई से व्याख्या

बाइनरी में चल बिन्दु प्रतिनिधित्व और अपनी परिशुद्धता के बारे में अधिक जानकारी के लिए पर एक नज़र इस लेख जॉन स्कीट से जहां वह बारे में बात करती floatsहै और doublesऔर इस एक है जहाँ वह बारे में बात करती decimals


2
गलत! double53 बिट्स की सटीकता है, और यह एक बाइनरी फ़्लोटिंग-पॉइंट प्रारूप है, जबकि decimalएक ... दशमलव एक, निश्चित रूप से, 96 बिट्स सटीक के साथ है । तो double~ 15-17 दशमलव अंकों और दशमलव 28-29 अंकों के लिए सटीक है (और दो बार सटीक नहीं double)। अधिक महत्वपूर्ण बात यह है कि decimalवास्तव में 128 बिट्स में से केवल 102 का उपयोग करता है
phuclv

धन्यवाद @phuclv, तय कि। मेरा मतलब था "अंतरिक्ष आवंटन"। आप की शुद्धता के बारे में सही थे decimals(96) है, लेकिन doublesहै अपूर्णांश के 52 बिट , नहीं 53.
fabriciorissetto

1
हां, मंटिसा में 52 बिट्स हैं, लेकिन अभी भी एक छिपा हुआ बिट है, जिसके परिणामस्वरूप 53-बिट महत्व है। क्या यह 52 या 53 बिट्स फ़्लोटिंग पॉइंट सटीक है?
phuclv

दशम.विद्या महान थी! Thx
रिकार्डो जी सारावा

10

पूर्णांक को डबल्स में डाला।


(डबल) myIntegerValue: विशिष्ट होना करने के लिए, तुम इतनी तरह एक डबल करने के लिए एक पूर्णांक डाल सकता
चोट

5

उनमें से एक को पहले डबल में बदलें। यह फ़ॉर्म कई भाषाओं में काम करता है:

 real_result = (int_numerator + 0.0) / int_denominator

1
आसान करने के लिए बस ...var result = 1.0 * a / b;
बेसिक

@ बासिक ऐसा करने के 100 तरीके हैं। मैं इसके अलावा और अधिक पसंद करता हूं क्योंकि यह तेजी से है, हालांकि कास्टिंग स्पष्ट रूप से अभी भी तेज है।
मार्क रैनसम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.