2012-09-16 13 views
35

संभव डुप्लिकेट निर्माण करने के लिए:
Why can't I return a double from two ints being dividedदो पूर्णांकों डिवाइडिंग एक नाव परिणाम

मेरे सी ++ प्रोग्राम मेरी पूर्णांक devision के उत्पादन में छोटा है, तब भी जब मैं कोशिश करते हैं और एक में उत्पादन जगह नाव। वे चर को रखने के दौरान इसे कैसे रोक सकते हैं (& बी) पूर्णांक के रूप में?

[email protected]:~/c/precision$ cat precision.cpp 
#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    int a = 10, b = 3; 
    float ans = (a/b); 
    cout<<fixed<<setprecision(3); 
    cout << (a/b) << endl; 
    cout << ans << endl; 
    return 0; 
} 

[email protected]:~/c/precision$ g++ -o precision precision.cpp 
[email protected]:~/c/precision$ ./precision 
3 
3.000 
+1

नाव ans = ((नाव) एक/ख); (या purists कृपया करने के लिए static_cast) – Vlad

+0

हाँ मेरी गलती, मेरे पास एक खोज थी लेकिन मुझे वह पोस्ट नहीं मिला। यह एक डुप्लिकेट है, मेरा बुरा! – jwbensley

उत्तर

60

कास्ट तैरता को ऑपरेंड:

float ans = (float)a/(float)b; 
+0

इसके अलावा, फ्लोट्स में केवल इतना सटीकता है। आपके पूर्णांक विभाजन को 'डबल' –

+15

की "डबल परिशुद्धता" की आवश्यकता हो सकती है कड़ाई से बोलने के लिए आपको केवल एक पूर्णांक को फ़्लोट करने की आवश्यकता है, यह सोचने से यह अतिरिक्त स्पष्ट हो जाता है। – Gerard

+0

'आईएनटी के; \t के/3; 'यहां'/'' INT' वर्ग के लिए बुलाया जाएगा, तो उस कलाकार के पीछे क्या कारण है जो नाममात्र या denominator काम करेगा? – UnKnown

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