1、Teacher teaching designCONTENTS 目 录实型常量的表示方法格式控制符明确考点 交流提升案例分析 仿真演练存储形式及分类实型常量的表示方法PART 01实型常量的表示方法实型常量的表示方法实型也称为浮点型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。它有二种形式:十进制小数形式,指数形式。1)十进制数形式:由数码0 9和小数点组成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均为合法的实数。注意,必须有小数点。2)指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为
2、:a E n(a为十进制数,n为十进制整数)其值为 a*10n。如:2.1E5(等于2.1*105)3.7E-2(等于3.7*10-2)0.5E7(等于0.5*107)-2.8E-2(等于-2.8*10-2)以下不是合法的实数:345(无小数点)E7(阶码标志E之前无数字)-5(无阶码标志)53.-E3(负号位置不对)2.7E (无阶码)标准允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。存储形式及分类PART 02存储形式及分类实型数据在内存中的存放形式 实型数据一般占4个字节(32位)内存空间。按指数形式存储。实数3.14159在内存中的存放形式如
3、下:数符 小数部分 指数小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。实型变量的分类实型变量分为:单精度(float型)、双精度(double型)和长双精度(long double型)三类。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-383.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-3081.7E+308,可提供16位有效数字。实型变量定义的格式和书写规则与整型相同。例如:float x,y;(x,y为单精度实型量)double a,b,c;(a,
4、b,c为双精度实型量)+.3141591类型说明符 比特数(字节数)有效数字数的范围float32(4)6710-371038 double64(8)151610-30710308 long double 128(16)181910-4931104932 格式控制符PART 03格式控制符实型变量格式控制符实型变量的种类及对应的格式控制符其中:小数形式的格式控制符是%f,指数形式的格式控制符是%e;单精度和双精度的格式控制符是%f,长双精度的格式控制符是%lf。实型常数不分单、双精度,都按双精度double型处理。明确考点 交流提升PART 04明确考点 交流提升【例2】实型数据的舍入误差现象
5、。(一个较大实数加一个较小实数。)实型变量也是由有限的存储单元组成的,能提供的有效数字是有限的。这样就会存在舍入误差。main()float x=7.24356E10,y;y=x+54;printf(x=%en,x);printf(y=%en,y);程序执行的结果为:x=7.24356E10y=7.24356E10这里x和y的值都是7.24356E10,显然是有问题的,原因是由于float只能保留67位有效数字,变量y所加的54被舍弃。因此由于舍入误差的原因,进行计算时,要避免一个较大实数和一个较小实数相加减。【例1】实型常量的应用main()printf(%fn,260.);printf(%
6、fn,260);printf(%fn,260f);程序运行结果为:260.0000000.000000260.000000思考:为什么第二个输出结果为0.000000。明确考点 交流提升【例3】实型数据的溢出main()float a,b,c,d;a=1.2E33;b=0.5E-22;c=0.25E-21;d=a/b;d=d*c;printf(c=%fn,d);结果会出现:Floating point error:Overflow这是由于程序中a/b的运算的结果超出了float型能表示的范围产生溢出。所以在使用中应避免直接用一个较大的数除以一个较小的数。可以将程序的计算部分d=a/b;d=d*
7、c;改为:d=a*c;d=d/b;或 d=a/b*c;以避免这种情况的发生。也许有人会提出d=a/b*c为什么不产生溢出哪?其原因是,在Turbo C中float型数据在计算时要先转换为double型数据,计算后再转换为float型数据赋给float变量d。仿真演练 体验探索PART 05案例分析 仿真演练3、若已定义int a=256,执行语句printf(%x,a);的结果是()A)0100 B)0256 C)0ffe D)0ff4、C语言中,整数-8在内存中的存储形式是()A)1111,1111,1111,1000 B)1000,0000,0000,0000C)0000,0000,000
8、0,1000 D)1111,1111,1111,01115、以下程序的输出结果是:main()int k=17;printf(%d,%o,%x n,k,k,k);1、以下选项中不正确的实型常量是()A)123 B)le4 C)3.640E-1 D)0.352、该源程序执行后,屏幕上显示什么?()main()int a;float b;a=4;b=9.5;printf(a=%d,b=%4.2fn,a,b);A)a=%d,b=%fn B)a=%d,b=%fC)a=4,b=9.50 D)a=4,b=9.5案例分析 仿真演练6、下面四个选项中,均是不合法的浮点数的选项是()。A)1600.12e3B)1232e4.2.e5C)-.18123e40.0D)-e3.2341e37、下面四个选项中,均是合法浮点数的选项是()。A)+1e+1 5e-9.403e2B)-.6012e-4-8e5C)123e1.2e-.4+2e-1D)-e3.234 5.e-08、下列常数中不能作为C的常量的是()。A)0 xA5 B)2.5e-2 C)3e2 D)0582