2011-05-23 20 views
28

मैं कुछ और पर काम कर रहा था के रूप में काम ++ नहीं है, लेकिन सब कुछ शून्य के रूप में बाहर आया था, इसलिए मैं इस minimalistic उदाहरण बना है, और उत्पादन अब भी है 0.डिवीजन की उम्मीद

#include <iostream> 

int main(int argc, char** argv) 
{ 
    double f=3/5; 
    std::cout << f; 
    return 0; 
} 

मैं क्या याद आ रही है?

उत्तर

45

आप इस तथ्य को याद कर रहे हैं कि 3 और 5 पूर्णांक हैं, इसलिए आपको पूर्णांक विभाजन मिल रहा है। संकलक बनाने के अस्थायी प्रदर्शन बिंदु विभाजन, उनमें से एक एक वास्तविक संख्या है:

double f = 3.0/5; 
+2

इंटीजर बनाम फ़्लोटिंग-पॉइंट डिवीजन मार्ग की संस्कार की तरह लगता है; मुझे पता है कि यह मेरे लिए था। – zenzelezz

9

इस प्रयास करें:

double f = 3.0/5.0; 

इससे आपकी समस्या ठीक करना चाहिए

5

में से एक के बाद एक .0 डालने की कोशिश करो divisors। यह उन्हें फ्लोटिंग पॉइंट अक्षर में बदल देगा।

17

यह की जरूरत नहीं करता .0 होने के लिए, आप भी 3./5 या 3/5. या 3e+0/5 या 3/5e-0 या 0xCp-2/5 कर सकते हैं या ... वहाँ केवल एक संकेतक शामिल होना तो यह है कि संकलक जानता है कि यह प्रदर्शन करने के लिए चाहिए था की जरूरत है फ्लोटिंग पॉइंट के रूप में विभाजन।

एक और संभावना: double f=double(3)/5। यह बहुत अधिक टाइपिंग है, लेकिन इसमें कोई संदेह नहीं है कि आप क्या कर रहे हैं।

या बस double f=.6, वह भी काम कर देता है ...

2

आप पूर्णांकों का उपयोग कर रहे उपयोग करें। आप अपने स्थिरांक को बाएंअराउंडबाउट राज्यों की तरह दोगुना बनाने के लिए कई चीजें कर सकते हैं, हालांकि यह अच्छा साफ नहीं है। पढ़ना और भ्रमित करना मुश्किल है। यदि आप 3 और 5 चाहते हैं तो उन्हें 3.0 और 5.0 बनाएं। अगर आपको अपना कोड पढ़ने के लिए मजबूर किया जाता है तो सभी को पता चलेगा कि आपका क्या मतलब है। वह जो कुछ भी कहता है वह वास्तव में आपको सी/सी ++ और सिर या पूंछ बनाने के लिए कैसे तैरता है, यह जानने की आवश्यकता है।

+0

अच्छा, मैंने सोचा कि यह स्पष्ट था कि '0xCp-2/5' वास्तव में गंभीर नहीं लिया जाना था! ... लेकिन 3.0 का उपयोग करने के लिए: यह स्वाद का मामला है। मैं व्यक्तिगत रूप से इसे इस तरह लिखने से नफरत करता हूं, क्योंकि विज्ञान में, दशमलव बिंदु के बाद अंकों की किसी भी सीमित संख्या में मापा मानों में किसी प्रकार की गलतता संकेत मिलता है, इसलिए जब मैं 3.0 देखता हूं तो मैं हमेशा 3 ± .05, और 3.0/5.0 मेरे लिए .6 ± .01 है। यह डबल परिशुद्धता नहीं है! मैं '3./5' पसंद करता हूं। – leftaroundabout

+0

मेरी पोस्ट का पूरा बिंदु इसे पढ़ने में आसान बनाना था। 3./5 मानक गणित समीकरण की तरह दिखता नहीं है। आपको अपने दर्शकों को जानने की ज़रूरत है: मुझे नहीं लगता कि पोस्टर (यदि उन्हें वास्तविक और int के अलग-अलग मुद्दों के साथ समस्याएं आ रही हैं) उच्च स्तरीय विज्ञान अनुप्रयोगों के लिए प्रोग्रामिंग कर रही है, तो मैं बेहतर बेहतर सोचूंगा। –

संबंधित मुद्दे