请教单片机公里和英里切换怎么写?

[复制链接]
1169|8
 楼主| verycard 发表于 2017-3-7 19:21 | 显示全部楼层 |阅读模式
1.以公里为计数原始数据,从1米开始计。显示分为公里和英里切换?
2.例0.3KM /1.609344  =0.186MI
   例0.3KM /1.6  =0.18MI
单片机直接除吗?   
xyz549040622 发表于 2017-3-7 22:49 | 显示全部楼层
可以直接上浮点运算,或者进行算法优化,主要问题是,你用的什么单片机?
 楼主| verycard 发表于 2017-3-8 07:39 | 显示全部楼层
xyz549040622 发表于 2017-3-7 22:49
可以直接上浮点运算,或者进行算法优化,主要问题是,你用的什么单片机? ...

51
徕泽 发表于 2017-3-8 08:58 | 显示全部楼层
试一试就知道了!
xyz549040622 发表于 2017-3-8 09:58 | 显示全部楼层

直接浮点运算也是可以的,但是速度慢,看你运算量大小了。慢了再进行优化
botming 发表于 2017-3-8 11:20 | 显示全部楼层
精度要求不高的话,也可以先化整数再做除,浮点计算也是棒棒的
coody 发表于 2017-3-8 22:46 | 显示全部楼层
51的话,用浮点乘法比浮点除法快得多。
例 0.3KM / 1.609344 = 0.3 * 0.6213711 =0.1864113 MI
    0.3MI * 1.609344 = 0.4828 km
不要那么高精度的话,并且数据不是很大,则可以使用整数运算,速度快得多,比如,系数放大10000倍,即4位小数:
例 0.3km * 6214 = 1864, 就是0.1864mi
    0.3mi * 16093 = 4828,就是0.4828 km
wkshengren 发表于 2017-3-9 09:33 | 显示全部楼层
建议直接用整数乘法,然后显示的时候再显示成小数
包括0.3km最好也用整数表示
lnulibin 发表于 2017-3-10 18:35 | 显示全部楼层
直接用浮点数乘法是可以的.个人估计完成一次乘法最多需要几十毫秒时间,也就够了.
如果不能忍受这几十毫秒.把数据处理成整形数据,利用移位方法是比较快的.

X /1.6=(X*4+X)/8

X*4即将数据左移2位.
X/8即将数据右移3位.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

17

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部