gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:49 27 4
gpt4 key购买 nike

我想从 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;
}

最佳答案

这个:

free(gps_latlong);

是即时未定义行为,因为 gps_latlong 不是堆分配对象。删除该行。

此外,您应该直接在 gps_coord 上调用 strtod(),本地复制没有任何用处。

关于将字符串转换为 double 或 float 以执行数学方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43322924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com