无法将纬度/长度转换为DMS并返回
问题描述:
我已经编写了两个函数来将纬度和经度从组件Degrees,Minutes和Seconds中来回转换。就decToDMS()方法而言,数学看起来没什么问题,只是我的积极/消极信号在我的分钟和秒钟都没有。无法将纬度/长度转换为DMS并返回
对于DMStoDec,我只是几乎没有在我的计算中,我不太确定错误在哪里。这里既是代码示例:
int DMStoDec(double *deg, int degrees, int minutes, double seconds) {
//test for invalid inputs
if (deg == NULL) {
return 1;
}
if (*deg < -180 || *deg > 180) {
return 1;
}
// Formula is degrees = degrees + minutes/60 + seconds/3600;
double m;
double s;
double d;
d = (double) degrees;
m = (double) minutes/60;
s = (double) seconds/3600;
*deg = d + m + s;
printf("DMS to Dec is %lf\n", *deg);
return 0;
}
int decToDMSint *degrees, int *minutes, double *seconds, double deg) {
if (degrees == NULL || minutes == NULL || seconds == NULL) {
return 1;
}
if (deg < -180 || deg > 180) {
return 1;
}
*degrees = deg;
deg = deg - trunc(deg);
// multiply the decimal by 60;
deg *= 60;
*minutes = deg;
// Drop the integer
deg = deg - trunc(deg);
deg *= 60;
*seconds = deg;
return 0;
}
答
如何:
*degrees = deg;
deg = deg - trunc(deg);
// minutes and seconds are >= 0
if (deg < 0)
deg *= -1;
// multiply the decimal by 60
deg *= 60;
*minutes = deg;
// Drop the integer
deg = deg - trunc(deg);
deg *= 60;
*seconds = deg;
这并获得成功!谢谢你的帮助。 – N0ug4t