十进制数0.6采用"乘2取整,顺序排列"法化成二进制,而有些数是算不完的,就需要保持需要的精度了。0.6化成二进制,精度为小数后四位,结果就是0.1001。
具体计算过程如下:0.6x2=1.2 取整1,0.2x2=0.4 取整0,0.4x2=0.8 取整0,0.8x2=1.6 取整1,0.6x2=1.2 取整1..........。保留四位精度,得二进制转换结果0.1001。
扩展资料
十进制小数转换成二进制小数计算过程:
用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后将得到的整数进行正向排序,即可得到转换后的二进制小数。
参考资料来源:百度百科-十进制转二进制
1.首先,小数化成二进制是用【乘基数取整法或者叫乘二取整法】。
2.例如: 第一步 0.6 * 2=1.2,取整就是1,所以最高位就是1【或者说从左往右数的第一位是1】;
第二步就是把小数后的数提取出来就是 0.2,然后用 0.2 * 2=0.4,这时小数部分第二位就是0;
第三步提取小数部分是0.4,就有 0.4 * 2=0.8,小数部分第三位就是0;
第四步 0.8 * 2=1.6 ,小数部分第四位就是1;
第五步 0.6 *2 =1.2【又是0.6已经重复了,进入死循环】,一直如此重复下去,终止条件是乘出来的结果为0或者达到你需要的精度为止。【目前只是计算了五步,显然0.6的二进制为:0.1001100110011001......】
3.这时你会发现上面的步骤会一直循环的计算下去【不考虑达到精度的问题】,实际上这永远算不完!这就是著名的浮点数精度问题。因为计算机的浮点数是用有限的位数来表达的,所以浮点数永远无法在计算机精确表示,这也就是计算机C/C++语言判断浮点数是否相等,而不直接用==的原因。
4.C语言代码如下:
结果如图所示:
计算过程
追答0.6*2=1.2留1,留整数1
在用0.2*2=0.4,整数为0
在继续0.4*2...............
就这样和上图一样啊 只到为刚好为1为止
结果到底多少,0.1001还是0.1010