计算机中的浮点数(小数)大部分是不精确的;
计算机的数字的存储和运算都是通过二进制进行的,十进制的数要转换成二进制再进行储存和运算,Float和Double的小数部分会出现无限循环的情况,所以会出现不准确的情况;
十进制的小数转二进制 :
小数部分乘以2,结果够1则补1,不够1则补0,结果一直乘以2,直到结果是1.0;
比如 15.6 ;
整数转整数,小数转小数
1111.1011001100
0.6 * 2 = 1.2 //补1
0.2 * 2 = 0.4 //补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.4 //补0
0.4 * 2 = 0.8 //补0