浮点型数字由整数和小数两部分组成。在计算机中,所有的信息都以二进制的方式进行储存或运算。但往往在浮点数进行运算时,会出现小数不精确的问题,以十进制浮点数转换为二进制浮点数为例解释。
规则:十进制浮点数转换为二进制浮点数时,十进制整数部分转换为二进制整数部分,十进制小数部分转换为二进制小数部分
例:将十进制浮点数15.6转换成二进制浮点数
一、整数部分转换
15(十进制)= 0000 1111(二进制)
二、小数部分转换
①0.6 * 2(转成二进制,因此*2) = 1.2
1.2大于1,将1写在转换后的小数部分 0.1
②0.2 * 2 = 0.4
减去刚刚转换后写在小数部分的1,剩余小数部分继续进行运算,不足1时将0写在转换后的小数部分 0.10
③0.4 * 2 =0.8
刚刚转换后小数部分继续*2结果仍不足1,剩余小数部分继续进行运算,不足1时将0写在转换后的小数部分 0.100
④0.8 * 2 = 1.6
1.6大于1,将1写在转换后的小数部分 0.1001
⑤0.6 * 2 = 1.2
减去刚刚转换后写在小数部分的1,剩余小数部分继续进行运算,不足1时将0写在转换后的小数部分 0.10011
下面同①一样,后面步骤相同,因此进行小数循环,所以出现了小数不精确的问题。
其余可能:若在小数部分转换时相乘结果为1.0,则在转换后小数部分写1,十进制浮点数转为二进制浮点数结束。