Yardımla ilgili bir sorunla karşı karşıya getiriyorum. Ben gcc4 derleyici kullanıyorum ve gcc4 kullanmak için oldukça kısıtlıyım.Sözdizimli döküm dizesini çifte
Std :: string'i double'a dönüştürmek istiyorum.
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
arada, ben de
atof
çalıştı ve hala aynı sorunu var.
aAmount
tarafından gösterilen doğru değeri almak için
setprecission(2)
ile
istringstream
kullanmak için herhangi bir yolu var mı?
Sadece daha az hassasiyetle yazdırmanız gerekiyor. Her zaman aynı hassasiyet saklanır. – chris
'boost :: lexical_cast' işlevi aslında değerin ayrıştırılması/çıkarılması için dahili olarak std :: istringstream' işlevini kullanır. –
Aşağıdakileri yaparsam, 22 tane alıyorum ... 'std :: stringstream precisionValue; precisionValue.precision (2); precisionValue << boost :: lexical_cast (aAmount) << std :: endl; çift dAmount; precisionValue >> dAmount; // Şimdi 22 ' –
Nostradamus