दिलचस्प पोस्ट
कॉलिंग थ्रेड इस ऑब्जेक्ट तक नहीं पहुंच सकता क्योंकि एक अलग थ्रेड का मालिक है ExecJS :: उपयोगकर्ता में रनटाइम त्रुटि # इंडेक्स (आरओआर) नरम कीबोर्ड दिखाई देने पर लेआउट को कैसे समायोजित करें JavaFX के लिए एक KeyListener कैसे लिखना जीएसएएन ने "अपेक्षित BEGIN_OBJECT फेंक रहा था लेकिन BEGIN_ARRAY था"? PHP में बहुआयामी सरणी छंटनी एक पीडीएफ बनाने के बिना पीडीएफ़ कैसे अपडेट करें? ईमेल से समयक्षेत्र के साथ तारीख को पार्स करना? जब मैं javax.tools.javaCompiler का उपयोग करता हूँ, तब वर्गपथ को कैसे सेट किया जाए? PHP में mysql_ * फ़ंक्शन का उपयोग क्यों नहीं किया जाना चाहिए? पाठ पर आधारित jQuery का चयन करें regex और javascript का उपयोग करते हुए html में शब्द हाइलाइट करें – लगभग वहां कैसे मैं "=>" के रूप में लैम्ब्डा अभिव्यक्ति में प्रयोग किया जाता है। नेट वर्ण कुंजी को कैसे दबाया जाता है यह कैसे पता चलेगा? `जीआईटी मर्ज 'और` जीआईटी मर्ज – नो-एफएफ` के बीच अंतर क्या है?

सेट सटीक और दशमलव अंकों की संख्या के साथ स्ट्रिंग में फ्लोट कन्वर्ट?

सटीक और दशमलव अंकों की संख्या निर्दिष्ट करते समय आप एक फ्लोट को स्ट्रिंग में कैसे बदल सकते हैं?

उदाहरण के लिए: 3.14159265359 -> "3.14"

वेब के समाधान से एकत्रित समाधान "सेट सटीक और दशमलव अंकों की संख्या के साथ स्ट्रिंग में फ्लोट कन्वर्ट?"

 #include <iomanip> // setprecision #include <sstream> // stringstream double pi = 3.14159265359; stringstream stream; stream << fixed << setprecision(2) << pi; string s = stream.str(); 

निश्चित देखें

फिक्स्ड फ्लोटिंग-पॉइंट नोटेशन का उपयोग करें

floatfield लिए floatfield प्रारूप फ्लैग fixed

जब floatfield fixed सेट किया fixed , तो फ़्लोटिंग-प्वाइंट वैल्यू फिक्स्ड-पॉइंट नोटेशन के द्वारा लिखी जाती है: मान सटीक क्षेत्र ( precision ) द्वारा निर्दिष्ट के साथ दशमलव के भाग में बिल्कुल अंकों के साथ प्रदर्शित होता है और कोई एक्सपोनेंट भाग नहीं होता है।

और सेट्रेपिसिजन

इस तरह की बात करने का प्रथागत तरीका "स्ट्रिंग पर प्रिंट" है सी ++ में इसका मतलब है कि std::stringstream तरह कुछ ऐसा है:

 std::stringstream ss; ss << std::fixed << std::setprecision(2) << number; std::string mystring = ss.str(); 

एक अन्य विकल्प snprintf :

 double pi = 3.1415926; std::string s(16, '\0'); auto written = std::snprintf(&s[0], s.size(), "%.2f", pi); s.resize(written); 

डेमो त्रुटि से निपटने को जोड़ा जाना चाहिए, यानी written < 0 लिए जांचना

यहां मैं एक नकारात्मक उदाहरण प्रदान कर रहा हूं जहां से अस्थायी संख्या को स्ट्रिंग में कनवर्ट करते समय आप से बचने की इच्छा होती है।

 float num=99.463; float tmp1=round(num*1000); float tmp2=tmp1/1000; cout << tmp1 << " " << tmp2 << " " << to_string(tmp2) << endl; 

आपको मिला

 99463 99.463 99.462997 

नोट: num चर कोई भी मान 99.463 के करीब हो सकता है, आप समान प्रिंट आउट प्राप्त करेंगे। बिंदु सुविधाजनक c ++ 11 "to_string" फ़ंक्शन से बचने के लिए है। यह इस जाल को बाहर निकालने के लिए मुझे कुछ समय लगा। सबसे अच्छा तरीका है स्ट्रिंगस्ट्रीम और स्प्रिंटफ पद्धतियों (सी भाषा)। C ++ 11 या नया को दिखाने के लिए फ़्लोटिंग बिंदु के बाद अंकों की संख्या के रूप में दूसरा पैरामीटर प्रदान करना चाहिए। अभी ठीक है 6। मैं यह मान रहा हूँ ताकि दूसरों को इस विषय पर समय नहीं लगेगा।

मैंने अपना पहला संस्करण लिखा था, कृपया मुझे बताएं कि क्या आपको कोई बग मिलेगा, जिसे तय करने की आवश्यकता है। आप iomanipulator के साथ सटीक व्यवहार को नियंत्रित कर सकते हैं। मेरा कार्य दशमलव बिंदु के बाद अंकों की संख्या दिखाने के लिए है।

 string ftos(float f, int nd) { ostringstream ostr; int tens = stoi("1" + string(nd, '0')); ostr << round(f*tens)/tens; return ostr.str(); }