我将一个文件中的一个double值添加到变量并将其推入一个格式为“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
谢谢!
答案 0 :(得分:0)
假设你的Point
类在windows框架中,我很确定它的成员是int
类型。
无论哪种方式,您的值都被强制转换为非浮点类型并被截断。
答案 1 :(得分:0)
我认为您的问题是检索值(可能使用cout ?? - &gt;然后您可以使用:cout.precision(15))
请参阅:How do I print a double value with full precision using cout?