2013-01-25 15 views
32

की सटीकता क्या std :: to_string() का उपयोग करते हुए डबल से स्ट्रिंग को परिवर्तित करते समय परिणाम की सटीकता निर्धारित करने का कोई तरीका है?std :: to_string (डबल)

+1

यह भी देखें http://stackoverflow.com/a/16606128/2436175 – Antonio

+0

यह वह उत्तर है जिसे आप ढूंढ रहे थे: https://stackoverflow.com/a/16606128/512225 – jimifiki

उत्तर

30

सं

रिटर्न: प्रत्येक फ़ंक्शन एक स्ट्रिंग उद्देश्य यह है कि "%d", "%u", "%ld", "%lu" के एक फॉर्मेट स्पेसिफायर साथ sprintf(buf, fmt, val) फोन करके उत्पन्न होगा अपने तर्क के मूल्य का चरित्र प्रतिनिधित्व पकड़े, "%lld", "%llu", "%f", "%f", या "%Lf", जहां बफ पर्याप्त आकार के आंतरिक वर्ण बफर को निर्दिष्ट करता है।

+0

http: //en.cppreference। com/डब्ल्यू/सीपीपी/स्ट्रिंग/basic_string/to_string –

2

मुझे विश्वास है कि setprecision साथ std::stringstream का उपयोग कर सबसे लचीला/पोर्टेबल विकल्प होगा, लेकिन अगर आप अपने डेटा पता है, एक समाधान के रूप में, आप to_string परिणाम सबस्ट्रिंग की कोशिश कर सकते।

std::string seriesSum(int n) 
{ 
    double sum = 0, div = 1; 
    for(int i = 0; i < n; i++) { 
     sum += 1.0/div; 
     div += 3; 
    } 

    return std::to_string(round(sum * 100)/100).substr(0,4); 
} 

कोड में ऊपर मैं दो दशमलव स्थानों 0.00 स्ट्रिंग के पहले 4 अंक लेने के द्वारा के साथ मुद्रण कर रहा हूँ, लेकिन यह केवल काम करता है क्योंकि मैं जानता हूँ कि पूर्णांक हिस्सा कभी नहीं एक अंक से ऊपर जा रहा है: उदाहरण के लिए। आप दशमलव विभाजक की खोज के लिए string.find() का भी उपयोग कर सकते हैं और इसे और अधिक गतिशील बनाते हुए, सबस्ट्रिंग के आकार की गणना करने के लिए इसकी स्थिति का उपयोग कर सकते हैं।

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