无法将纬度/长度转换为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; 
+0

这并获得成功!谢谢你的帮助。 – N0ug4t