Я использую следующий код для преобразования строк ввода поплавка:istringstream не разбор правильно
template <typename T>
T parseString(const std::string &s)
{
T val;
std::istringstream is(s.c_str());
is >> val;
return val;
}
float x = parseString<float>("0.1");
std::cout << std::setprecision(12) << x;
При печати х я получаю «0.10000000149», которая, очевидно, неправильно. Есть предположения?
Рассмотрите 'std :: stof'. И это никоим образом не «очевидно неправильно». Номера с плавающей запятой просто не точны. C++ также не имеет никакого типа 'decimal'. – chris