निम्नलिखित स्निपेट आउटपुट ०.२९८४७ जब मैं .२९,८४८ अपेक्षा की होगी:सी ++ दौर में सेटप्रिजन है? यदि ऐसा है तो मैं इसे क्यों देख रहा हूं?
double f = 0.298475;
cout << setprecision(5) << f << endl;
अन्य उदाहरण के लिए, तथापि, मैं गोलाई पर ध्यान दें:
double f = 0.123459;
cout << setprecision(5) << f << endl;
आउटपुट: 0,12346
और
double f = 0.123454;
cout << setprecision(5) << f << endl;
आउटपुट: 0.12345
0.298474999999999990318855225268634967505931854248046875, सटीक होने के लिए। – dan04
दूसरे शब्दों में, वास्तव में दो गोल चरण हैं: एक जब शाब्दिक '0.298475' को 'डबल' में परिवर्तित किया जाता है, और दूसरा 'cout' में कुछ अंकों को प्रिंट करते समय। – aschepler
@ dan04: यह कुछ हद तक व्यर्थ प्रदर्शन है; एक 64-बिट आईईईई 754 फ्लोट में केवल 17 दशमलव अंकों की जानकारी है ... –