将String转换为Double - 精度丢失

时间:2014-02-06 20:53:06

标签: c++ string double typeconverter

我正在从包含文本和数字的文件中读取字符串数组。当我将字符串转换为double进行计算时,我会失去精度。我返回的值应该等于284262.5862225,但在main中我只得到一个值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
你好792350

1 个答案:

答案 0 :(得分:2)

对我来说很好。问题可能是您使用cout打印值,并且它只打印前6个有效数字(这里是点之前的部分)。如果包含库

#include <iomanip>

并且你提高了输出的精度,它应该可以工作。

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