Sono di fronte a un problema di conversione per il quale mi piacerebbe il tuo aiuto. Sto usando il compilatore gcc4 e sono abbastanza limitato ad usare gcc4.incrementa la stringa di cast lessicale per raddoppiare
Voglio convertire std :: string in double.
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
A proposito, ho anche provato atof
e ho ancora lo stesso problema. C'è un modo per utilizzare istringstream
con setprecission(2)
per ottenere il valore corretto mostrato da aAmount
?
Devi solo stamparlo con meno precisione. Ha sempre la stessa precisione memorizzata. – chris
La funzione 'boost :: lexical_cast' utilizza effettivamente' std :: istringstream' internamente per eseguire l'analisi/estrazione del valore. –
Se faccio quanto segue, sto ottenendo 22 invece ... 'std :: stringstream precisionValue; precisionValue.precision (2); precisionValue << boost :: lexical_cast (aImporto) << std :: endl; double dAmount; precisionValue >> dAmount; // Ora ottengo 22' –
Nostradamus