当计算机收到用户输入的0.1,首先是将其转换成对应的二进制。在使用乘二取整法得到0.000110011001100110011b的过程中:
0.1 × 2 = 0.2 取整为 0
0.2 × 2 = 0.4 取整为 0
0.4 × 2 = 0.8 取整为 0
0.8 × 2 = 1.6 取整为 1
0.6 × 2 = 1.2 取整为 1
0.2 × 2 = 0.4 取整为 0 (从这里开始出现循环)
0.4 × 2 = 0.8 取整为 0
0.8 × 2 = 1.6 取整为 1
0.6 × 2 = 1.2 取整为 1
0.2 × 2 = 0.2 取整为 0 (循环)
0.4 × 2 = 0.8 取整为 0
0.8 × 2 = 1.6 取整为 1
0.6 × 2 = 1.2 取整为 1
0.2 × 2 = 0.2 取整为 0 (循环)
0.4 × 2 = 0.8 取整为 0
0.8 × 2 = 1.6 取整为 1
0.6 × 2 = 1.2 取整为 1
我们可知,十进制0.1所表示的量,是无法用二进制表示的。只能通过增加位数的方式,更趋近0.1。
Ps:
二进制数的小数点后每一位的权重,(表示成十进制)对应的是0.5、0.25、0.125、0.0625。
所以十进制0.1表示成二进制后,直到小数点后第四位,即权重为0.0625时,才出现了第一个1。