सी ++ मेरी भाषा नहीं है इसलिए इस साधारण समस्या को क्षमा करें। मैं स्ट्रिंग से डबल तक एक रूपांतरण में सटीकता खो रहा हूं, क्या कोई मदद कर सकता है?सी ++ स्ट्रिंग को सटीक खोने वाले रूपांतरण को दोगुना करने के लिए?
string lAmount;
string lSuspendedInt = "131663.51";
string lAccruedInterest = "0.0";
double dSuspendedInt= atof(lSuspendedInt.c_str()); //PROBLEM HERE?
double dAccruedInterest = atof(lAccruedInterest.c_str());
double dTotal = dSuspendedInt + dAccruedInterest;
char cAmount[50];
memset(cAmount,0X00,sizeof(cAmount));
sprintf(cAmount,"%g*",dTotal);
lAmount = cAmount;
cout << "lAmount: "<<lAmount<<endl; //PRINTING: 131664 not 131663.51
मैं memset समारोह में% च के साथ खेला है लेकिन इस देता है 131663,510000
अग्रिम धन्यवाद।
Sapatos
यदि मुझे इस राशि की सटीक आवश्यकता होती है, तो मैं इसके बजाय निश्चित बिंदु का उपयोग करने पर विचार करता हूं। सी ++ तरफ, मुझे यकीन है कि स्ट्रिंग को डबल के अलावा डबल में बदलने के बेहतर तरीके हैं। sprintf() यह करने का एक और सी तरीका भी है यदि आपको लगता है कि समस्या वहां है। एक टिप्पणी के रूप में मेरे पास आपके लिए यहां एक सटीक उत्तर नहीं है। –
@ माइकल: कोई स्ट्रीम का उपयोग कर सकता है, हालांकि यह भारी है, सी ++ 0x मानक लाइब्रेरी के हिस्से के रूप में विशिष्ट 'स्टॉफ' (और पूरे परिवार) निर्देश प्रस्तुत करता है। –