2014-02-06 107 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

相關問題