String NEMA2WGS84(String ddmmStr) { //保留7位,由于單片機限制,必須放大到整數處理,否則小數點后面位數只有2位,不能直接用字符串轉雙精度函數
int ind1 = ddmmStr.indexOf(".");
int dot = ddmmStr.length() - ind1 - 1; //找到原來小數點位置,轉換10的冪次方
ddmmStr.replace(".", ""); //轉換到整數
String dd = ddmmStr.substring(0, ind1 - 2); //取出度整數部分
String mm = ddmmStr.substring(ind1 - 2, ddmmStr.length()); //分
int degrees = dd.toInt();
double minutes = mm.toDouble() / (60); //轉換到分鐘
double dotl = 1 / powl(10, dot); //縮小位數
double res = (double)degrees + minutes * dotl; //把整數在轉換回小數
// Serial.println(res, 7);
return String(res, 7);
}
以上是我經過實際測試通過對,如果直接轉換只有兩位小數,現在已經可以到7位精度。
審核編輯 黃宇
-
單片機
+關注
關注
6035文章
44554瀏覽量
634631 -
浮點數
+關注
關注
0文章
60瀏覽量
15868 -
Arduino
+關注
關注
188文章
6468瀏覽量
186952
發布評論請先 登錄
相關推薦
評論