Java中的小数用float和double表示,小数属于浮点型;
将一个小数转化为二进制表示的方式是,不断的乘2,取其中的整数部分:
(1) 0.625*2 = 1.25, 整数部分为1,小数部分为0.25
(2) 0.25 * 2 = 0.5 , 整数部分为0,小数部分为0.5
(3) 0.5 * 2 = 1 , 整数部分为1,小数部分为0
所以0.625的二进制表示就是0.101。
但数学的计算中0.1*0.1的结果应当是0.01;但是在计算机中打印出来的结果却是0.010000000000000002,这是为什么呢;主要原因是因为计算机中的存储和运算都是通过二进制实现的;而在二进制中不能精确表示0.1;只能保存一个无限接近0.1的数;所以得到的结果就是不精确的。
0.1转换为二进制小数则为:0.000110011001100...