Преобразовать строку в двойную - точность потеряна

Я читаю из файла, содержащего текст и числа, в массив строк. Когда я конвертирую строку в двойную для вычислений, я теряю точность. Значение, которое я возвращаю, должно быть равно 284262,5862225, но в основном я получаю только значение 284262. Похоже, что цифры после запятой не возвращаются. Мой код ниже.

ifstream inFile("test.txt");
string line;
int row, col;
double value;
string head[6][2]={};
row=0;

if (!inFile.is_open())
{
    cout << "Error opening xyz file. . .";

}
else
{
    while(row<6)
    {
        getline(inFile, line);
        stringstream ss (line);
        col=0;
        while (ss>>head[row][col])
        {
            col++;
        }
        row++;

    }
    inFile.close();
}

stringstream convert (head[2][1]);
convert>>value;
return value;

Образец файла:

nrows 270
ncols 730
xll 284262.586255
yll 792350


person khafen    schedule 06.02.2014    source источник
comment
может быть, stringstream лечит. как разделитель?   -  person Creris    schedule 07.02.2014
comment
У вас есть образец вашего файла?   -  person Daniel    schedule 07.02.2014
comment
Образец файла здесь:   -  person khafen    schedule 07.02.2014
comment
ncols 270 nrows 730 xllcorner 284262.586255 yllcorner 792350 cellsize 1 NODATA_value -9999   -  person khafen    schedule 07.02.2014
comment
Извините, я не привык к такому форматированию текста. Я добавил образец файла ниже блока кода   -  person khafen    schedule 07.02.2014
comment
@TheOne Я не думаю, что stringstream лечит . в качестве разделителя, потому что я могу обновить файл, чтобы он имел более короткий двойной (например, 234.453), и он отлично работает. Спасибо за предложение   -  person khafen    schedule 07.02.2014


Ответы (1)


Он отлично работает для меня. Проблема, вероятно, в том, что вы печатаете значение с помощью cout, и оно печатает только первые 6 значащих чисел (вот часть перед точкой). Если включить библиотеку

#include <iomanip>

и вы увеличиваете точность вывода, это должно работать.

cout << setprecision (13) << value << endl;
person sebas    schedule 06.02.2014
comment
Идеальный! Спасибо вам за помощь! - person khafen; 07.02.2014