У меня возникла проблема с конверсией, для которой я хотел бы получить вашу помощь. Я использую компилятор gcc4, и я довольно ограничен, чтобы использовать gcc4.увеличить лексическую строку литья, чтобы удвоить
Я хочу преобразовать std :: string в 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
Кстати, я также попытался atof
и я до сих пор один и тот же вопрос. Есть ли способ использовать istringstream
с setprecission(2)
, чтобы получить правильное значение, указанное aAmount
?
Вам просто нужно напечатать его с меньшей точностью. Он всегда имеет ту же точность. – chris
Функция 'boost :: lexical_cast' фактически использует' std :: istringstream' внутри, чтобы выполнить синтаксический анализ/извлечение значения. –
Если я сделаю следующее, я получаю 22 вместо этого ... 'std :: stringstream precisionValue; precisionValue.precision (2); precisionValue << boost :: lexical_cast (aAmount) << std :: endl; double dAmount; precisionValue >> dAmount; // Теперь я получаю 22' –
Nostradamus