2014-02-06 46 views
0

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

+1

也许'stringstream'对待。作为分隔符? – Creris

+0

你有你的文件的样本吗? – MondKin

+0

示例文件是在这里: – khafen

回答

2

它工作正常的我。问题可能是你用cout打印值,并且它只打印前6个有效数字(这里是点之前的部分)。如果你包含库

#include <iomanip> 

并且你增加了输出的精度,它应该工作。

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

完美!感谢您的帮助! – khafen