将字符串转换为双精度 - 精度丢失

Convert String to Double - precision lost

本文关键字:精度 双精度 字符串 转换      更新时间:2023-10-16

我正在从包含文本和数字的文件读取字符串数组。当我将字符串转换为双精度进行计算时,我失去了精度。我返回的值应该等于 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
XL 284262.586255
YLL 792350

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

#include <iomanip>

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

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