数学中1+1=2,那2-1=1,这个是我们大家都明白的道理。但在我们C语言中,给定一个数,加上1,再减去所给定的数,结果是多少?我们就来看看。
程序示例#include<stdio.h>int main(void){ float a,b; b = 2.0e20 + 1.0; a = b - 2.0e20; printf("%f \n",a); return 0;}
程序输出结果:
4008175468544.000000
这个是基于Dev C++编译后的结果。
那为什么会出现这样的结果?在程序示例中2.0e20相当于2.0 * 1020,这个数值非常的大。我们定义的是float的数据类型,我们定义的这个数值已经超过float能够存储的有效数字,在这样的情况下,计算结果就存在错误。简单总结下:计算机缺少足够的小数位来完成正确的运算。
另一种情况,我们把2.0e20改为2.0e5,这个时候,计算结果就不会存在问题
#include<stdio.h>int main(void){ float a,b; b = 2.0e5 + 1.0; a = b - 2.0e5; printf("%f \n",a); return 0;}
程序输出结果:
1.000000
这个时候float就有足够的精度进行运算。