मुझे स्ट्रिंग को डबल में बदलने में समस्या हो रही है। मुझे 33.9425/N 118.4081/W
स्ट्रिंग टू स्ट्रिंग कनवर्ट करना - लॉस प्रेसिजन
के प्रारूप में अक्षांश/लंबे समन्वय के साथ एक स्ट्रिंग दी गई है, मैं पहले अपने फ़ंक्शन trimLastChar(std::string& input)
को दो बार कॉल करता हूं, जो उत्तर, दक्षिण, पूर्व, पश्चिम वर्णों और फिर आगे की स्लैश को हटा देगा। यह फ़ंक्शन 33.9425
और 118.4081
सम्मानपूर्वक std::string
के रूप में सम्मानित करता है।
मैं अपने std::string
को double
में कनवर्ट करने के लिए निम्न कोड का उपयोग कर रहा हूं ... हालांकि समस्या यह है कि रूपांतरण हानि परिशुद्धता - मुझे संदेह है कि यह गोलाकार हो जाता है?
// Location In String is what trimLastChar returns
std::stringstream stream(locationInString);
std::cout << "DEBUG: before: " << locationInString << " ";
// output is a double* output = new double passed by reference to my function
stream >> output;
std::cout << output << std::endl;
इस मामले में उत्पादन होगा उत्पादन:
33.9425
118.408
तुम नोटिस के रूप में, सही मान 118.4081
होना चाहिए लेकिन 1 याद आ रही है ...
कोई भी विचार कैसे तय करने के लिए? या अधिक महत्वपूर्ण, यह क्यों हो रहा है?
... आप अपने उत्पादन प्रारूप की जांच होनी चाहिए, मुझे लगता है कि हम इस अदालत पर सिर्फ एक स्वरूपण समस्या है। – IdeaHat