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位精度。
審核編輯 黃宇
-
單片機
+關注
關注
6074文章
45320瀏覽量
662862 -
浮點數
+關注
關注
0文章
62瀏覽量
16348 -
Arduino
+關注
關注
190文章
6514瀏覽量
195852
發(fā)布評論請先 登錄
單片機讀取浮點數
單片機浮點數轉十六進制,串口接收浮點數處理
單片機顯示浮點數的相關資料下載
浮點數在單片機數據采集監(jiān)控系統中的應用
PIC單片機浮點數格式及其與十進制數之間的轉換和程序設計步驟
單片機浮點數的快速除法
單片機顯示浮點數
FLASH存儲浮點數據的解決辦法
定點數和浮點數在STM32單片機中使用傅里葉(FFT)變換的理解

分享在arduino 單片機中浮點數轉換位數不夠,精度丟失的解決辦法
評論