0.6+0.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++语言判断浮点数是否相等,而不直接用==的原因。结果如图所示:
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++语言判断浮点数是否相等,而不直接用==的原因。结果如图所示:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询