在C ++程序中存储GPS坐标的最佳变量类型是什么?我编写下面的代码只是为了试一试,无论我选择哪种变量类型,问题仍然存在。
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
class Coordinate {
public:
float xcoor, ycoor;
int radius;
void set_values (float, float, int);
};
void Coordinate::set_values (float x, float y, int r){
xcoor = x;
ycoor = y;
radius = r;
}
int main (){
Coordinate test;
test.set_values (32.682633, -117.181554, 50);
cout << "coordinates: (" << test.xcoor << "," << test.ycoor << ")\n";
return 0;
}
此代码输出值: (32.6826,-117.182)
显然,我正在失去巨大的精确度,但无论如何我能保持它吗?我以前没有做GPS坐标,也找不到有类似问题的人。 谢谢你的帮助。
答案 0 :(得分:1)
在算术中使用浮点变量会导致精度损失,但据我所知,您不会使用坐标进行任何计算。
我怀疑你假设std::cout
输出具有完全精度的浮点变量,默认情况下不是这样。
double test = 1.23456789;
std::cout.precision(10);
std::cout << "test: " << test << std::endl; // prints "test: 1.23456789"
有关详细信息,请参阅that question以及documentation of ostreams。
答案 1 :(得分:0)
据我所知,它只打印6位数字。尝试setw或setprecision。使用前者,您可以设置常量来打印数字或字符(这在对齐方面很方便),后者设置程序打印的位数。
对于花车,你不应该丢失这些数字中的任何数据。