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浏览量
634629 -
浮点数
+关注
关注
0文章
60浏览量
15868 -
Arduino
+关注
关注
188文章
6468浏览量
186951
发布评论请先 登录
相关推荐
评论