看到这么一道题
Print(1.2-1.0)
A.True B.Flase
答案:B
在解决这道题之前,我们先看看十进制如何转换二进制
十进制转二进制有两种情况
·十进制整数转二进制
·十进制小数转二进制
十进制整数转二进制:短除法,即除2取余
如:20
20/2=10·····0
10/2=5······0
5/2=2·······1
2/2=1·······0
1/2=0·······1
越往下,越高位
由此二进制为:10100
小数十进制转二进制钱:乘2取整法
如:0.8
方法如下:
0.8*2=1.6·····1(取整)
(1.6-1)*2=1.2
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.10011…
不难看出十进制小数转二进制是个无限不循环小数,在计算机实际运算中,会先将十进制转二进制后再进行运算,再转十进制。在此过程,二进制的无限数位会被计算机自动舍弃一部分位数,因此1.2-1.0只能近似于0.2
故输出Flase