c语言浮点数什么意思(C语言浮点数是什么意思)

1+1=2,2-1=1?

数学中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就有足够的精度进行运算。