打印
[51单片机]

float精度瓶颈怎么解决?

[复制链接]
1106|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
人生长苦|  楼主 | 2020-12-12 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
人生长苦|  楼主 | 2020-12-12 15:05 | 只看该作者
目前是把所在点简化为一个平面,算出每经度固定一个距离和每纬度固定一个距离,此方法在几十千米范围内精度还行。

使用特权

评论回复
板凳
MagicSquare834| | 2020-12-12 15:12 | 只看该作者
换32位机

使用特权

评论回复
地板
Diyer123| | 2020-12-12 16:47 | 只看该作者
支持不了double,可以用模拟笔算

使用特权

评论回复
5
William1994| | 2020-12-13 12:54 | 只看该作者
32位机用float也有一模一样的问题。
你应该用个64位整数来存(8个char组成的结构体),自己做个64位整数的加法运算和减法运算函数库。
比较麻烦的是printf不支持,需要做个转十进制string的函数。

还有看看32位定点数能到8个有效数字,看看能不能满足你的需求。

使用特权

评论回复
6
caoenq| | 2020-12-17 14:42 | 只看该作者
float型应该是共有8位有效,去除一位符号位,还有7位有效数字,一般的应用足够。

使用特权

评论回复
7
广东梁百万| | 2020-12-17 15:09 | 只看该作者
如果是业余玩玩的那只有张就下,如果是做产品销售的话那你就只有自己动手去编双精度函数库

使用特权

评论回复
8
人生长苦|  楼主 | 2020-12-17 22:15 | 只看该作者
广东梁百万 发表于 2020-12-17 15:09
如果是业余玩玩的那只有张就下,如果是做产品销售的话那你就只有自己动手去编双精度函数库 ...

自己玩,给自己摩托车上做个导航仪,用一个舵机实时指示目的地方位,四位数码管显示直线距离,float精度可以了,测试相距十几米也能准确定向。

使用特权

评论回复
9
ayb_ice| | 2020-12-18 08:27 | 只看该作者
度分秒分别用不同的变量保存不可以吗,分别比较,GPS输出的不就是这些吗
这与年月日时分秒不一样的吗

使用特权

评论回复
10
airwill| | 2020-12-19 15:26 | 只看该作者
经纬度数据, 只在 ±180 范围內,  可以考虑用定点数,  仍然是32位数, 精度提高好多倍呢

使用特权

评论回复
11
tianxj01| | 2020-12-19 15:37 | 只看该作者
用定点数吧,虽然大家还是32位,那绝对精度可就不是一个概念。

使用特权

评论回复
12
人生长苦|  楼主 | 2020-12-19 15:50 | 只看该作者
tianxj01 发表于 2020-12-19 15:37
用定点数吧,虽然大家还是32位,那绝对精度可就不是一个概念。

要算三角函数

使用特权

评论回复
13
人生长苦|  楼主 | 2020-12-19 15:50 | 只看该作者
ayb_ice 发表于 2020-12-18 08:27
度分秒分别用不同的变量保存不可以吗,分别比较,GPS输出的不就是这些吗
这与年月日时分秒不一样的吗
...

主要是需要算三角函数

使用特权

评论回复
14
tianxj01| | 2020-12-19 15:59 | 只看该作者

用泰勒展开式求解,迭代20次精度能吓死你。
公式动动脑筋,用定点计算还是很方便的。

使用特权

评论回复
15
ayb_ice| | 2020-12-21 11:01 | 只看该作者
人生长苦 发表于 2020-12-19 15:50
主要是需要算三角函数

可以用浮点数分别算出度分秒,这样精度可以保证的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

217

帖子

1

粉丝