首页 > 其他分享 >计算机进行小数运算时出错的原因——3.1将0.1累加100次也得不到10

计算机进行小数运算时出错的原因——3.1将0.1累加100次也得不到10

时间:2023-02-05 10:33:05浏览次数:44  
标签:10 0.1 sum 累加 二进制 3.1 100 小数

首先,我们来看一个计算机运算错误(无法得到正确结果)的例子。下图是将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

相关文章