101.11 就等于 1 * 2^2 +0 2^1 + 12^0 + 12^-1 + 12^-2 = 4+0+1+1/2+1/4 = 5.75 下面的图展示了一个二进制小数的表达形式。
image从图中可以看到,对于二进制小数,小数点右边能表达的值是 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 ... 1/(2^n)现在问题来了, 计算机只能用这些个 1/(2^n) 之和来表达十进制的小数。
我们来试一试如何表达十进制的 0.2 吧。
0.01 = 1/4 = 0.25 ,太大0.001 =1/8 = 0.125 , 又太小0.0011 = 1/8 + 1/16 = 0.1875 , 逼近0.2了0.00111 = 1/8 + 1/16 + 1/32 = 0.21875 , 又大了0.001101 = 1/8+ 1/16 + 1/64 = 0.203125 还是大0.0011001 = 1/8 + 1/16 + 1/128 = 0.1953125 这结果不错0.00110011 = 1/8+1/16+1/128+1/256 = 0.19921875已经很逼近了, 就这样吧。 这就是我说的用二进制小数没法精确表达10进制小数的含义。
网友评论