请教一个算法处理方式

2020-01-20 19:13发布

程序中需要求一个商(Z)的结果,这个商(Z)的结果最大不大于65535(10进制),其中有一个定值Y=10000000000(10进制),然后去读一个20位的ADC的数据变量X,这个X的最大结果不大于160000,最小不小于152600,(10进制,因此时读的结果并不是满幅值),然后用Y去除以读到的结果X,最后得到商Z,请问如何处理?
直接用Z=10000000000/X;试过,不行,算出的结果不准确,除法没有乘法准确。请问有什么好的办法去处理?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
horsema
1楼-- · 2020-01-22 09:31
哇,都是高手啊.
eduhf_123
2楼-- · 2020-01-22 13:58
本帖最后由 eduhf_123 于 2015-1-25 15:03 编辑
wxdn 发表于 2015-1-24 02:48
这个程序原本是一个测量电压的程序,将输入电压(0-60V)通过分压电阻分压后给ADC进行采样,由于分压电阻肯 ...


153333 - 152600 = 733
733 = 2*256 + 221
area[2]=65312, step[2]=109
65312 - (221*109+128)>>8 = 65312 - 94 = 65218
10000000000/153333 = 65217.533 ≈ 65218


158888 - 152600 = 6288
6288 = 24*256 + 144
area[24]=62995, step[24]=102
62995 - (144*102+128)>>8 = 62995 - 57 = 62938
10000000000/158888 = 62937.415 ≈ 62937



看了5楼的程序,好像行不通。
随便取了153333和158888来验证我在5楼提出的算法,不知道到底是哪里行不通?

编辑原因:给字加了颜 {MOD}。

一周热门 更多>