संभव नुकसान के नुकसान


119

मुझे माफ कर दो अगर यह एक भोला सवाल है, हालांकि मैं आज नुकसान में हूं।

मेरे पास एक साधारण विभाजन गणना है जैसे कि:

double returnValue = (myObject.Value / 10);

ऑब्जेक्ट में वैल्यू एक इंट है।

मुझे एक संदेश मिल रहा है, जिसमें संभव है कि फ्रैक्चर के संभावित नुकसान। हालाँकि, जब मैं डबल को इंट में बदलता हूं, तो संदेश चला जाता है।

ऐसा क्यों होता है पर कोई विचार?


महान प्रतिक्रियाओं के लिए आप सभी का धन्यवाद। यह समझ में आता है कि 2 अंतर मानों को विभाजित करते समय आप दशमलव बिंदु खो देते हैं।
कोडलाइकबीर

जवाबों:


168

जब आप दो int को एक अस्थायी बिंदु मान में विभाजित करते हैं तो अंश भाग खो जाता है। यदि आप किसी एक आइटम को एक फ़्लोट में डालते हैं, तो आपको यह त्रुटि नहीं मिलेगी।

इसलिए उदाहरण के लिए 10 को 10.0 में बदल दें

double returnValue = (myObject.Value / 10.0);

57

आप पूर्णांक विभाजन कर रहे हैं यदि myObject.Valueएक पूर्णांक है, क्योंकि दोनों /पूर्णांक प्रकार के हैं।

फ्लोटिंग-पॉइंट डिवीजन करने के लिए, अभिव्यक्ति में संख्याओं में से एक फ़्लोटिंग-पॉइंट प्रकार का होना चाहिए। अगर myObject.Value एक डबल, या निम्न में से कोई भी था तो यह सच होगा:

double returnValue = myObject.Value / 10.0;
double returnValue = myObject.Value / 10d; //"d" is the double suffix
double returnValue = (double)myObject.Value / 10;
double returnValue = myObject.Value / (double)10;

7

पूर्णांक द्वारा विभाजित एक पूर्णांक आपके पूर्णांक को लौटा देगा। मान को या तो डबल से विभाजित करें या 10.0 से विभाजित करें।


7

मान लें कि myObject.Valueएक है int, समीकरण myObject.Value / 10एक पूर्णांक विभाजन होगा जो तब एक डबल में डाली जाएगी।

इसका मतलब है कि myObject.Value 12 होने के परिणामस्वरूप वापसी में परिणाम 1 हो जाएगा, 1.2 नहीं

आपको पहले मूल्य डालने की आवश्यकता है:

double returnValue = (double)(myObject.Value) / 10.0;

इसका परिणाम सही मान 1.2 होगा, कम से कम जितना सही होगा डबल्स को उनकी सीमाएं दी जाएंगी, लेकिन एसओ पर कहीं और चर्चा की गई है, लगभग सभी तरह से :-)।


4

मुझे लगता है कि चूंकि myObject एक इंट है, तो आपको करना चाहिए

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