小弟最近在做GPS定位的问题,涉及到将度分制转换为度的问题。
问题详情:将一个有六位小数的浮点数除以60之后得到其各位的数值
单片机源程序如下:
- int a;
- char latitude[] = {'3','0','3','0','.','0','6','7','4','1','1'};
- a = (((latitude[2]-48)*10+(latitude[3]-48)+(latitude[5]-48)*0.1+(latitude[6]-48)*0.01+(latitude[7]-48)*0.001+(latitude[8]-48)*0.0001+(latitude[9]-48)*0.00001+(latitude[10]-48)*0.000001)/60.000000)*1000000;
- latitude[2] = '.';
- latitude[3] = a/100000+0x30;
- latitude[4] = a%100000/10000+0x30;
- latitude[5] = a%10000/1000+0x30;
- latitude[6] = a%1000/100+0x30;
- latitude[7] = a%100/10+0x30;
- latitude[8] = a%10+0x30;
- latitude[9] = '\0';
复制代码 代码中latitude[]数组保存的是接收到的纬度数据,其值为30度30.067411分,转换成度就需要把30.067411除以60,得到0.501123(保留6位小数),再加上30就得到了30.501123度,至此转换完成。
小弟上面贴出的代码在VS code里面可以完成上述功能,但是在单片机里面就无法完成,不知道是哪里出了问题,请求大神指点,跪谢!!!
不知道我把问题表达清楚没有,如果没有的话欢迎大家提出,我补充
|