0

我将文件中的一个双精度值添加到变量中并将其推入向量中,格式为 "338620.3478" ,然后我从向量中获取值,它只是得到 "338620",因为它无法获得所有双精度价值。

那么如何获得像原始格式一样的完整双精度值呢?

编码:

struct Point {
    double x, y;

    bool operator <(const Point &p) const {
            return x < p.x || (x == p.x && y < p.y);
    }

};

    ifstream iFile("griddata.dat"); //read a file (grid)
string line; 
Point Grid; /
while(getline(iFile,line)) 
{
    unsigned pos = line.find(",");//the symbol is used to separate X and Y
    std::string strs = line.substr(0,pos); // get X
    std::string strs2 = line.substr(pos+1); // get Y

    Grid.x = atof(strs.c_str()); // get the first cooordinate X
    Grid.y = atof(strs2.c_str()); // get the second cooordinate Y

    // A list of coordinates of grid is stored into the vector gridPoints
    gridPoints.push_back(Grid); // adding the points of grid to vector

}
int j;

for(j=0;j<gridPoints.size();j++)
{
    //here i cannot get the full double value for gridPoints[j].x;
    //....it just gets "338620"

}

文件格式(griddata.dat):

338620.3478,6196150.566

谢谢!

4

2 回答 2

0

我认为您的问题是检索值(也许使用 cout ??-->然后您可以使用:cout.precision(15))

请参阅:如何使用 cout 以全精度打印双精度值?

于 2013-05-28T14:58:45.980 回答
0

假设您的Point类在 windows 框架中,我很确定它的成员是int类型。

无论哪种方式,您的值都被强制转换为非浮点类型并且被截断。

于 2013-05-28T14:32:43.867 回答