u32 z=adch*5000/1023;
u32 get_round(u16 adch,u8 digit) { u32 order; u8 i; if(digit <=5) { for(i=0; i=512) return (adch*5*order/1023)+1; else return (adch*5*order/1023); } return 0; }
get_round(1023,5); //500000 get_round(1023,3); //5000 get_round(1023,0); //5
MOP 发表于 2016-10-25 01:52 奇怪的是,都沒人發現範圍有問題,10Bit的話是0~1023唷,所以code就如下 是針對您的需求,不要使用到浮點數,所 ...
SingleYork 发表于 2016-10-25 08:32 凌晨三点多发表的回复……大半夜不睡觉的么……还是说有时差?
7943603 发表于 2016-10-25 16:25 拒绝浮点运算,所有的计算只限于简单的乘除而已,如果除不尽就采用求余运算,不要让计算机去帮你完成 ...
瞎折腾 发表于 2016-10-25 20:49 你这个式子我试过,最后的的得数依然要用32位的,不然出来不行的,你可以试一下,我开始用的16位的,这个 ...
7943603 发表于 2016-10-25 21:44 你没有理解,所有的数都要转成32位处理,这个是不错的,我说处理没说放弃32位 ...