小弟最近在做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里面可以完成上述功能,但是在單片機里面就無法完成,不知道是哪里出了問題,請求大神指點,跪謝!!!
不知道我把問題表達清楚沒有,如果沒有的話歡迎大家提出,我補充
|