
2.2.2 实型数据
由于计算机中的实型数据是以浮点形式表示的,即小数点的位置可以是浮动的,因此实型常量既可以称为实数,也可以称为浮点数。
1.实型常量
C语言的实型常量有两种表示形式:十进制小数形式和指数形式。
①十进制小数由数字和小数点组成。小数点前表示整数部分,小数点后表示小数部分,具体格式如下:
<整数部分>.<小数部分>
其中,小数点不可省略,<整数部分>和<小数部分>不可同时省略。
②指数形式又称科学记数法。该种表示形式包含数值部分和指数部分。数值部分表示方法同十进制小数形式,指数部分是一个可正可负的整型数,这两部分用字母e或E连接起来。其具体格式如下:
<整数部分>.<小数部分>e<指数部分>
其中,e左边部分可以是<整数部分>.<小数部分>,也可以只是<整数部分>,还可以是.<小数部分>;e右边部分可以是正整数或负整数,但不能是浮点数。
实型常量表示方法如表2-4所示。
表2-4 实型常量表示方法

说明:3e+6表示3乘以10的6次幂,1.56e-3表示1.56乘以10的-3次幂。
注意:在表示指数形式时,e前必须有数字,e后必须为整数。例如,3e6也可以写为3e+6,或写成3e+06,或写成3e+006,都是一个数。
提示:使用指数形式来表示很大或很小的数比较方便。
2.实型变量
C语言提供的实型变量包括单精度型(float)、双精度型(double)、长双精度型(long double)。
各种类型的实数的范围及所占字节数如表2-5所示。
表2-5 实型变量类型

注意:这里的有效数字是指小数点后保留的小数位数。Turbo C对long double分配16个字节;而Visual C++ 6.0对double和long double一样处理,分配8个字节。
【例2.3】实型数据的不同表示。
程序代码如下:

程序的运行结果为:
12.300000
1.230000e+001
说明:对于每一个变量都应在使用前加以定义。实数12.3以“%f”格式输出,输出结果小数点后保留6位有效数字,不足位数补充0,所以显示结果为12.300000;第二次输出以“%e”格式(指数格式)输出,因为12.3即为1.23乘以10的1次幂,所以输出结果为1.230000e+001。
【例2.4】实型变量的定义与使用。
程序代码如下:

程序的运行结果为:
3.500000,2.000000
说明:实型数据默认在小数点后保留6位小数,不足位数补充0。t=x;x=y;y=t;这三条语句完成将x和y的值进行交换,借助于第三个变量t,就像交换两个杯子中的液体,需要借助于一个空杯一样。这个知识点以后还会用到。
在初学阶段,对long double型用得较少,因此我们不做详细介绍。读者只要知道当数据要求精度特别高时需要用此类型即可。实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此可能会产生一些误差,这些细微误差一般可以忽略不计。