0.353表示一个数里有3个(1/10),5个(1/100),3个(1/1000)。
0.11001表示一个数里有1个(1/2),1个(1/4),1个(1/32)。
0.353里有多少个(1/2)?
floor(0.353/0.5)=0个。
0.353里有多少个(1/4)?
floor(0.353/0.25)=1个。
0.353除了刚才那1个(1/4),还有多少(1/8)?
floor((0.353-0.25)/0.125)=0个。
0.353除了刚才那1个(1/4),还有多少(1/16)?
floor((0.353-0.25)/0.0625)=1个。
......
于是0.353=0.0101...
乘2取整法的原理就是这样,只是他换了一种说法:
floor(0.353/0.5) = floor(0.353*2)
floor(0.353/0.25) = floor(0.353*2*2)
floor((0.353-0.25)/0.125)
= floor((0.353*2*2-0.25*2*2)/(0.125*2*2))
= floor((0.353*2*2-1)/0.5)
= floor((0.353*2*2-1)*2)
.......
这种做法的好处把除法当乘法做,好算,并且上一步的结果下一步能接着用,比如上一步0.353*2已经算出来了,下一步再*2一次即可。