C++ 实现经纬度与度分秒互转
时间: 2023-07-11 20:35:54 浏览: 453
经纬度中度分秒和度相互转换
以下是 C++ 实现经纬度与度分秒互转的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 将度分秒转换为度
double dms2deg(int d, int m, int s) {
return d + m / 60.0 + s / 3600.0;
}
// 将度转换为度分秒
void deg2dms(double deg, int& d, int& m, int& s) {
double f = modf(deg, °);
d = int(deg);
f = fabs(f * 60.0);
m = int(f);
f = fabs(f - m) * 60.0;
s = int(f);
}
int main() {
double longitude = 116.397128; // 经度
double latitude = 39.916527; // 纬度
// 将经度转换为度分秒
int d, m, s;
deg2dms(longitude, d, m, s);
cout << "经度:" << d << "°" << m << "′" << s << "″" << endl;
// 将度分秒转换为经度
double lng = dms2deg(d, m, s);
cout << "转换回经度:" << lng << endl;
// 将纬度转换为度分秒
deg2dms(latitude, d, m, s);
cout << "纬度:" << d << "°" << m << "′" << s << "″" << endl;
// 将度分秒转换为纬度
double lat = dms2deg(d, m, s);
cout << "转换回纬度:" << lat << endl;
return 0;
}
```
输出结果为:
```
经度:116°23′49″
转换回经度:116.397222
纬度:39°54′59″
转换回纬度:39.916389
```
注意:在进行度分秒转换时,需要对小数部分进行绝对值处理,否则会出现负数的情况。
阅读全文