2013-01-21 12 views
11

आप सी ++ में फ्लोट को दो दशमलव स्थानों पर आउटपुट करने के लिए कैसे प्रारूपित करते हैं? मुझे setw और setprecision के साथ कोई भाग्य नहीं है क्योंकि मेरे कंपाइलर ने मुझे बताया है कि वे not defined हैं।सी ++ फ्लोट स्वरूपण

cout << "Total : " << setw(2) << total << endl;

कुल आउटपुट: Total : 12.3961

मैं चाहूँगा इसे होने की: 12.40 या 12.39 अगर यह पूर्णांक बनाना बहुत ज्यादा काम है।

+1

हमें कोड दिखाएं। – 0x499602D2

+0

मेरा बुरा, इसे भूल गया और इसे संपादित किया। – eveo

उत्तर

12

आप <iomanip> शामिल हैं और नाम स्थान गुंजाइश प्रदान करने की आवश्यकता के लिए setw and setprecision

#include <iomanip> 
std::setw(2) 
std::setprecision(5) 

कोशिश:

cout.precision(5); 
cout << "Total : " << setw(4) << floor(total*100)/100 << endl; 

या

cout << "Total : " << setw(4) << ceil(total*10)/10 << endl; 

iostream, सटीक समारोह प्रदान करता है, लेकिन setw उपयोग करने के लिए आप अतिरिक्त शीर्षलेख फ़ाइल शामिल करने की आवश्यकता हो सकती है।

+0

क्या अन्य पुस्तकालयों को शामिल किए बिना इसे प्रारूपित करने के अन्य कोई तरीके नहीं हैं?मैं यह पूछता हूं क्योंकि मेरा प्रोफेसर बहुत सख्त है, और मुझे लगता है कि वह नहीं चाहता कि हम क्लास उर्फ ​​'आईस्ट्रीम' और' सीस्ट्रिंग 'में सीखे गए लोगों की तुलना में अधिक पुस्तकालयों का पता लगाना चाहें। – eveo

+0

'प्रीप्रिजन (2)' प्रदर्शित करता है '12' '12.39' नहीं। Decimals कैसे प्रदर्शित करें? – eveo

+0

@eveo '' सी ++ मानक पुस्तकालय का हिस्सा है। अच्छे समाधान के बारे में इंटरनेट का पता लगाने के लिए एक अच्छे प्रोफेसर को आपको मना नहीं करना चाहिए। यदि आप समझा सकते हैं कि आपने * मानक लाइब्रेरी * (यह एक और * लाइब्रेरी * नहीं है) की एक और फ़ाइल क्यों शामिल की है, तो यह बिल्कुल ठीक होना चाहिए। – leemes

2

यदि आप पिछला शून्य से गोल करना चाहते हैं, तो आप सी फ़ंक्शन printf का उपयोग कर सकते हैं।

#include <iostream> 
#include <cstdio> 

int main() { 
    float v = 12.3961; 
    std::printf("%.2f",v); //prints 12.40 
} 

तुलना करने के लिए:

#include <iostream> 
#include <iomanip> 

int main() { 
    float v = 12.3961; 
    std::cout << std::setprecision(4) << v; //prints 12.4 
} 
+0

यह सवाल का जवाब नहीं देता है, है ना? – leemes

+0

@leemes वह पूछताछ कर रहा है कि स्वरूपित सटीक आउटपुट कैसे प्राप्त करें। है ना? कम से कम यही मैंने पढ़ा है। – Rapptz

+0

हम्म ... मुझे लगता है कि यह मेरी गलती थी। आपका जवाब सही है। हालांकि, मुझे यह पसंद नहीं है कि आप 'सीएफएफ' जैसे सी समारोह में वापस आना चाहते हैं। और आपका सी ++ समाधान सही आउटपुट को प्रिंट नहीं करता है क्योंकि वह चाहता था (पिछला 0 के साथ)। [वैसे: आपने पीछे की ओर अग्रसर कहा था] – leemes

8

भी अनुगामी शून्य शामिल करने के लिए, यह परिशुद्धता स्थापित करने के लिए पर्याप्त नहीं है।

std::cout << std::fixed << std::setprecision(2) << v; 

Working online example code

+3

इस काम के लिए आपको इसे शामिल करने की आवश्यकता है: # शामिल Allen

12

उपयोग: आप भी तय प्रारूप, के रूप में दशमलव बिंदु के बाद अंक की संख्या के रूप setprecision ने कहा जो अंकों की संख्या का उपयोग करता है करने के लिए चल बिन्दु प्रारूप बदलना होगा cout << fixed या cout.setf(ios::fixed), और std::cout.precision(<# of decimal digits>) निम्नलिखित में के रूप में (बजना-503.0.40 संकलक का उपयोग कर OSX मावेरिक्स के साथ शामिल):

#include <iostream> 
using namespace std; // Hopefully this doesn't offend purists :-) 
         // I just want to demonstrate usage with the 
         // fewest keystrokes and the clearest format 

int main() 
{ 
    float loge = 2.718; 
    double fake = 1234567.818; 
    cout << fixed; 
    cout.precision(2); 
    cout << "loge(2) = " << loge << endl; 
    cout << "fake(2) = " << fake << endl; 
    cout.precision(3); 
    cout << "loge(3) = " << loge << endl; 
    cout << "fake(3) = " << fake << endl; 
} 

इस से निर्गम (गोलाई पर ध्यान दें) है:

loge(2) = 2.72 
fake(2) = 1234567.82 
loge(3) = 2.718 
fake(3) = 1234567.818 

यह सरल संस्करण है। cout << fixed; का उपयोग करने के बदले, आप cout.setf(ios::fixed); का उपयोग कर सकते हैं (वैज्ञानिक नोटेशन प्रदर्शित करने के लिए, वैज्ञानिक के साथ प्रतिस्थापित करें; दोनों दशमलव बिंदु के दाईं ओर अंकों की संख्या सेट करेंगे)। ध्यान दें कि cout.precision() का उपयोग दशमलव बिंदु के दोनों तरफ कुल में प्रदर्शित अंकों की संख्या को सेट करने के लिए भी किया जाता है यदि स्वरूप झंडे में निश्चित या वैज्ञानिक शामिल नहीं है। इंटरनेट पर इसके लिए ट्यूटोरियल हैं।

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