Ich stehe vor einem Konvertierungsproblem, für das ich Ihre Hilfe möchte. Ich benutze den gcc4-Compiler und bin ziemlich darauf beschränkt, gcc4 zu benutzen.boost lexical Cast String zu verdoppeln
Ich möchte Std :: String in Double konvertieren.
std::string aQuantity = aRate.getQuantity();
std::string aAmount = aRate.getAmount();
// aAmount = "22.05"
double dQuantity = boost::lexical_cast<double>(aQuantity);
double dAmount = boost::lexical_cast<double> (aAmount);
// dAmount = 22.050000000000001
By the way, ich habe auch versucht, atof
und ich habe immer noch das gleiche Problem. Gibt es eine Möglichkeit istringstream
mit setprecission(2)
zu verwenden, um den korrekten Wert zu erhalten, der durch aAmount
angezeigt wird?
Sie müssen nur mit weniger Genauigkeit drucken. Es wird immer die gleiche Genauigkeit gespeichert. – chris
Die Funktion 'boost :: lexical_cast' verwendet intern' std :: istringstream', um den Wert zu parsen/extrahieren. –
Wenn ich Folgendes tue, bekomme ich stattdessen 22 ... 'std :: stringstream precisionValue; Präzisionswahrscheinlichkeit (2); precisionValue << boost :: lexikalischer_cast (aAmount) << std :: endl; double dAmount; precisionValue >> dMount; // Jetzt bekomme ich 22' –
Nostradamus