单片机y=0.09*x-45的数据处理

2020-01-22 12:14发布

本帖最后由 shafei 于 2012-3-29 19:50 编辑

我用单片机处理数据遇到一个不大不小的问题,
有一个公式y=0.09*x-45 其中x是unsigned char型,x的取值范围为[500,2500]我有几个问题
一:这里的y定义成什么类型比较好,float型吗?
二:算出y后,我希望对它四舍五入后,返回一个unsigned char型的数据
我的意思是说:算出y后,四舍五入以后,再让y变成unsigned char型
我举一个例子,假如我算出来y为178.3,我想让它四舍五入后变成178,然后返回unsigned char型的178,如果我算出来的是178.8,我想让他四舍五入后变成179,然后返回unsigned char型的179
大家可以帮帮我吗?我用在舵机角度控制上面
刚才有人提醒因为X是从500到2500,所以X不是uchar,应该定义成uint
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
75条回答
eduhf_123
1楼-- · 2020-01-24 22:18
本帖最后由 eduhf_123 于 2012-3-30 15:21 编辑
y574924080 发表于 2012-3-30 13:15
您好,您在这三个数据处理的式子里 y = INT( [(9*x-4450)]/100 )     误差范围为[-0.5,0.5]
                                                 y = INT (x-495)/11                   误差范围为[0, 2]                              
                                                 y = INT( (x*23-11392)/256 )     误差范围为[-1, 0]
都给出了误差范围, 我想问您是怎样计算误差范围的呢????


要善用Excel、善用Excel的公式。
误差分析.rar (54.1 KB, 下载次数: 202) 2012-3-30 15:19 上传 点击文件名下载附件
eduhf_123
2楼-- · 2020-01-25 00:51
chenguanghua 发表于 2012-3-30 15:08
4 6 8 10 楼  
都给出了算法
之前用的是 6楼的这种算法

见我在20楼的回复。
jssd
3楼-- · 2020-01-25 06:41
eduhf_123 发表于 2012-3-30 15:20
要善用Excel、善用Excel的公式。

高人啊。我一直以为Excel是文员的工具。。。。汗一个
eduhf_123
4楼-- · 2020-01-25 09:26
summarize 发表于 2012-3-29 20:22
不要定义为浮点数,运算太慢了……
把值扩大100倍
计算y=9*x-4500

值得一提的是,8楼这种处理四舍五入的办法效率太低了。
当我们需要对一个除法运算的商进行四舍五入时,只需要在计算除法之前预先给被除数加上除数的一半(即给商预先加上0.5)再做除法就好。
szzyq
5楼-- · 2020-01-25 11:50
 精彩回答 2  元偷偷看……
mcuz195
6楼-- · 2020-01-25 14:03
误差分析属数理统计一类的学科,没有计算机辅助很废脑筋的,借助EXCEL的确省时省力!

一周热门 更多>