float精度瓶颈怎么解决?
用8位机做导航定向,只支持32位float,板子功能就是输入目的地经纬度,再根据板子获取的实时gps经纬度来指示行进方向和距离。float六位有有效数字满足不了经纬度计算啊,有什么好的办法解决? 目前是把所在点简化为一个平面,算出每经度固定一个距离和每纬度固定一个距离,此方法在几十千米范围内精度还行。 换32位机 支持不了double,可以用模拟笔算 32位机用float也有一模一样的问题。你应该用个64位整数来存(8个char组成的结构体),自己做个64位整数的加法运算和减法运算函数库。
比较麻烦的是printf不支持,需要做个转十进制string的函数。
还有看看32位定点数能到8个有效数字,看看能不能满足你的需求。 float型应该是共有8位有效,去除一位符号位,还有7位有效数字,一般的应用足够。 如果是业余玩玩的那只有张就下,如果是做产品销售的话那你就只有自己动手去编双精度函数库 广东梁百万 发表于 2020-12-17 15:09
如果是业余玩玩的那只有张就下,如果是做产品销售的话那你就只有自己动手去编双精度函数库 ...
自己玩,给自己摩托车上做个导航仪,用一个舵机实时指示目的地方位,四位数码管显示直线距离,float精度可以了,测试相距十几米也能准确定向。 度分秒分别用不同的变量保存不可以吗,分别比较,GPS输出的不就是这些吗
这与年月日时分秒不一样的吗
经纬度数据, 只在 ±180 范围內,可以考虑用定点数,仍然是32位数, 精度提高好多倍呢 用定点数吧,虽然大家还是32位,那绝对精度可就不是一个概念。 tianxj01 发表于 2020-12-19 15:37
用定点数吧,虽然大家还是32位,那绝对精度可就不是一个概念。
要算三角函数 ayb_ice 发表于 2020-12-18 08:27
度分秒分别用不同的变量保存不可以吗,分别比较,GPS输出的不就是这些吗
这与年月日时分秒不一样的吗
...
主要是需要算三角函数 人生长苦 发表于 2020-12-19 15:50
要算三角函数
用泰勒展开式求解,迭代20次精度能吓死你。
公式动动脑筋,用定点计算还是很方便的。 人生长苦 发表于 2020-12-19 15:50
主要是需要算三角函数
可以用浮点数分别算出度分秒,这样精度可以保证的
页:
[1]