जब मैं सी # में विभाजन करता हूं, तो यह स्वचालित रूप से नीचे घूमता है। यह उदाहरण देखें:सी # अपने आप से विभाजन नीचे घूम रहा है
double i;
i = 200/3;
Messagebox.Show(i.ToString());
यह मुझे "66" युक्त एक संदेश बॉक्स दिखाता है। 200/3 वास्तव में 66.66666 ~ है।
क्या कोई तरीका है कि मैं इस गोल से बचने और 66.6666667 जैसी संख्या बनाए रख सकता हूं?
यहां महत्वपूर्ण सबक यह नहीं है कि पूर्णांक में पूर्णांक अंकगणित किया जाता है। इसके बजाय, यह है कि * ऑपरेंड * के प्रकार प्रोग्राम विश्लेषण के लिए अधिक प्रासंगिक होते हैं, जिसके परिणामस्वरूप परिणाम दिया जा रहा है। सी # में हम लगभग हमेशा "अंदर" से "बाहर" का कारण बनते हैं; हम यह नहीं कहते हैं "ओह, मुझे लगता है कि आप इसे डबल पर असाइन कर रहे हैं, इसलिए मैं अस्थायी बिंदु अंकगणित करूंगा"। इसके बजाए हम कहते हैं, "मुझे लगता है कि आप दो पूर्णांक को विभाजित कर रहे हैं; आपको परिणाम को पूर्णांक के रूप में देखना चाहिए। ओह, आप उस पूर्णांक को डबल के रूप में चाहते हैं? तो हम इसे एक डबल में बदल देंगे।" –
मैं वर्तमान में भी इस "समस्या" को देख रहा हूं। मैं नीचे से देख सकता हूं कि दो पूर्णांक को विभाजित करने के कारणों को एक पूर्णांक में क्यों परिणाम मिलता है, और मैं इससे खुश हूं। हालांकि, जो मैं समझ नहीं पा रहा हूं वह निम्न है: C#/VB.Net दौर 200/3 में 66 क्यों है? हम जानते हैं, कि अगर हम निम्नलिखित "200/3.0" करते हैं तो हम 66.6666667 के साथ समाप्त होते हैं। तो यह 66 तक गोल क्यों हो रहा है, और 67 तक नहीं घूम रहा है? अगर मैं निम्नलिखित करते हैं, मैं 67 के साथ अंत: Convert.ToInt32 (200/3,0) तो मेरी दशमलव int करने के लिए 67 हो जाता है, फिर भी क्रम 66 के लिए मेरा नंबर में परिवर्तित कर देंगे? – Oxonhammer