将字符串转换为double或float以执行数学方程式

时间:2017-04-10 12:16:33

标签: c string floating-point type-conversion double

我有一个函数,我试图从PHP转换。我正在执行这个例子的函数:

latlong_hex("1234.5678N");

并且我需要处理结果但是我遇到了字符串的问题,需要双倍转换和计算。转换后,我丢失小数点后的所有数字。底部的HEX功能正常工作。

int latlong_hex(char* gps_coord)
{
    int gps_result;
    char direction[2] = {0};
    char gps_latlong[10] = {0};
    double latdeg;
    double tempDec;
    char* tempGPS;

    strncpy(gps_latlong, gps_coord, 9);
    strncpy(direction, gps_coord+9, 1);

    tempDec = strtod(gps_latlong, NULL);
    free(gps_latlong);

    tempDec = tempDec / 100;

    if(direction == 'W' || direction == 'S')latdeg = round((floor(tempDec)+((tempDec - floor(tempDec))/60),7))*-1;
    else latdeg = round((floor(tempDec) + ((tempDec - floor(tempDec))/60),7));
    if(latdeg > 0){
        gps_result = latdeg / 0.0000001;
    }
    else{
        gps_result = (4294967295 + (latdeg/0.0000001))  ;
    }

    dec_hex(gps_result);

    return 1;
}

1 个答案:

答案 0 :(得分:3)

此:

.alignmentRectInsets

是即时未定义的行为,因为let ari = theMap.alignmentRectInsets print("wth \(ari)") > wth UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0) 不是堆分配的对象。删除该行。

此外,您应该直接在free(gps_latlong); 上致电gps_latlong,本地复制没有任何意义。