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

Я читаю из файла, который содержит текст и цифры в массив строк. Когда я конвертирую строку в удвоение для вычислений, я теряю точность. Возвращаемое мной значение должно быть равно 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
протоколы 730
xll 284262.586255
Yll 792350

0

Решение

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

#include <iomanip>

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

cout << setprecision (13) << value << endl;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]