浮点数的概念
浮点数也称小数或实数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。这是常见的小数的表现形式,称为十进制形式。
C语言中采用float和double关键字来定义小数,float称为单精度浮点型,double称为双精度浮点型,long double更长的双精度浮点型。
在任何区间内(如1.0 到 2.0 之间)都存在无穷多个实数,计算机的浮点数不能表示区间内所有的值。浮点数通常只是实际值的近似值,例如7.0可能被储存为浮点值6.99999。
点用内存的情况
我们先来测试一下float、double和long double三种浮点数据类型占用内存的字节数。
示例(book71.c)
运行结果
浮点数的精度
C标准规定,float类型必须至少能表示6位有效数字,且取值范围至少是10-37~10+37。
double类型和 float类型的最小取值范围相同,但至少必须能表示10位有效数字。
long double,以满足比double类型更高的精度要求。不过,C只保证long double类型至少与double类型的精度相同。
看了上面这段文字,估计大家有点晕,在之前的整数章节中,long比int的占用的内存多,存放数据的值也就越大,并且有一个准确的范围,但是,为什么各种浮点数存放数据的值怎么就这么模糊呢?我先不解释原因,浮点数的存储方式比较复杂,暂时不讨论,先用几个程序来测试一下它们的特征。
1、测试float类型
示例(book73.c)
运行结果