打印
[国产单片机]

怎么计算百分比

[复制链接]
5400|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hhhh0294|  楼主 | 2021-7-7 08:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2021-7-7 09:35 | 只看该作者
放大再缩小

使用特权

评论回复
板凳
ayb_ice| | 2021-7-7 10:08 | 只看该作者
56的30%
y = 56*30/100;

使用特权

评论回复
地板
walton1226| | 2021-7-7 13:17 | 只看该作者
unsigned char  y7=0,y3=0,y=140,para;
   y-=para;
   while(y>=10)
    {y-=10;
    y3+=3;
    y7+=7;
    }
    while(y>=3)
    {y-=3;
    y3+=1;
    y7+=2;
    }

使用特权

评论回复
5
hhhh0294|  楼主 | 2021-7-7 17:58 | 只看该作者
楼上算法很妙,问题解决了,神人也,谢谢

使用特权

评论回复
6
闲云浩海| | 2021-7-9 11:27 | 只看该作者
本帖最后由 闲云浩海 于 2021-7-9 11:36 编辑

把30%等效为(2^n1 + 2^n2 +2^n3)/2^N即可。N越大,精度越高,比如:30% 等效为 1/4(精度25%),也可以等效为5/16(精度31%),也可以等效为10/32,也可以等效为38/128。总之分母越大可以做的精度越高。
下一步5/16 = (1+4)/16,10/32 = (8+2)/32,38/128 = (32+4+2)/32。
再下一步a*30%等效为步a*38/128  = a*(32+4+2)/128 = (a<<5 + a<<2 + a<<1)>>7。

使用特权

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

本版积分规则

7

主题

32

帖子

0

粉丝