首先,我们来看一个计算机运算错误(无法得到正确结果)的例子。下图是将0.1累加100次,然后将结果输出到显示器上的C语言程序。
运行过程是这样的:
首先把0赋值给变量sum,然后在此基础上累加100次0.1。sum+=0.1;表示为现在的sum值加0.1。for(i=1;i<=100;i++).)表示将0内包含的处理重复100次。最后,使用printf("%f\n",sum);,将累加100次0.1后的变量sum的值输出到显示器上。大家心算一下就能知道,0.1累加100次后的结果是10。但是,代码运行后,显示器上显示的结果并不是10。
所以计算机内部是怎样处理小数的呢?
用二进制数表示小数
由于计算机内部所有的信息都是以二进制数的形式来处理的,因此在这一点上,整数和小数并无差别。不过,使用二进制数来表示整数和小数的方法却有很大的不同。
上图是把1011.0011这个小数二进制数转换成十进制数。
位权是用来与各数字位的数字相乘的数值。
标签:10,0.1,sum,累加,二进制,3.1,100,小数 From: https://www.cnblogs.com/z1218/p/17092980.html