2011-12-18 11 views
10

यदि मेरे पास फ्लोट प्रकार चर है और दशमलव बिंदु के बाद 3 अंकों के साथ आउटपुट प्राप्त करना चाहते हैं, तो C++ में iostream का उपयोग करके। यह मेरे द्वारा कैसे हो सकता है?सी ++ स्ट्रीम आउटपुट 3 अंकों के साथ। कैसे?

उत्तर

15

setf और precision का उपयोग करें।

#include <iostream> 

using namespace std; 

int main() { 
    double f = 3.14159; 
    cout.setf(ios::fixed,ios::floatfield); 
    cout.precision(3); 
    cout << f << endl; 
    return 0; 
} 

यह 3.142

+0

धन्यवाद। यह मेरे लिए सहायक था। – ozeron

+0

यह 3.1415 9 के लिए काम करता है लेकिन यह 13.1415 9 के लिए काम नहीं करता है। आपका समाधान केवल 10 से कम संख्या के लिए काम करता है। – mantler

+0

@manler आप सही हैं, मेरी मूल पोस्ट नहीं थी, लेकिन अंतिम (जिसे मैंने 11 मिनट पहले संपादित किया) सही ढंग से काम करता है। मैंने इसे दशमलव बिंदु से पहले 2 और 3 अंकों के साथ सत्यापित किया है, और यह अपेक्षित के रूप में 3 अंकों को प्रिंट करता है। – dasblinkenlight

6

यह एक प्रिंट दिखाता है "13.141"

#include <iostream> 
#include <iomanip> 
using namespace std; 

int main(){ 
    double f = 13.14159; 
    cout << fixed; 
    cout << setprecision(3) << f << endl; 
    return 0; 
} 
4

आप iomanip हैडर का उपयोग करके अधिक दशमलव अंक (और कई अन्य चीजों) की संख्या तय कर सकते हैं। उदाहरण के लिए:

#include <iostream> 
#include <iomanip> 

int main() { 
    double pi = 3.141592653589; 
    std::cout << std::fixed << std::setprecision(2) << pi << '\n'; 
    return 0; 
} 

इच्छा उत्पादन:

3.14 

ध्यान दें कि दोनों fixed और setprecision परिवर्तन धारा स्थायी रूप से इसलिए, अगर आप प्रभाव स्थानीय बनाना चाहते हैं, आप जानकारी पहले से बचाने के लिए और बाद में बहाल कर सकते हैं :

#include <iostream> 
#include <iomanip> 

int main() { 
    double pi = 3.141592653589; 

    std::cout << pi << '\n'; 

    // Save flags/precision. 
    std::ios_base::fmtflags oldflags = std::cout.flags(); 
    std::streamsize oldprecision = std::cout.precision(); 

    std::cout << std::fixed << std::setprecision(2) << pi << '\n'; 
    std::cout << pi << '\n'; 

    // Restore flags/precision. 
    std::cout.flags (oldflags); 
    std::cout.precision (oldprecision); 

    std::cout << pi << '\n'; 

    return 0; 
} 

इस बात का उत्पादन होता है:

3.14159 
3.14 
3.14 
3.14159 
+0

स्ट्रीम सेटिंग्स को सहेजने और पुनर्स्थापित करने के लिए धन्यवाद, बहुत उपयोगी है। – bhaller

+0

अधिक स्वच्छ कोड –

+0

@ खेलेड के लिए "नेमस्पेस std;" का उपयोग करके इस पंक्ति का उपयोग करें, इसके लिए तर्क और तर्क हैं जो जटिल हैं कि वे एक टिप्पणी बॉक्स में फिट नहीं होंगे :-) मैं स्वयं सभी के लिए स्पष्ट नामस्थान पसंद करता हूं लेकिन सबसे सरल कार्यक्रम या, कम से कम, विशिष्ट वस्तुओं का उपयोग * * पूरे नाम को आयात करने के बजाय नामस्थान के भीतर। हालांकि, यह विशेष चर्चा प्रश्न और मेरे उत्तर के लिए स्पर्शपूर्ण है। – paxdiablo

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