ITEEDU

3.4实型数据

3.4.1 实型常量的表示方法

实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式:十进制小数形式,指数形式。

1) 十进制数形式:由数码0~ 9和小数点组成。

   例如:
  0.0、25.0、5.789、0.13、5.0、300.、-267.8230
  等均为合法的实数。注意,必须有小数点。
2)指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。
  其一般形式为:
    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 (无阶码)
  标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。
【例3.5】说明了这种情况。
main(){
printf("%f\n ",356.);
printf("%f\n ",356);
printf("%f\n ",356f);
}

3.4.2 实型变量

1.实型数据在内存中的存放形式

实型数据一般占4个字节(32位)内存空间。按指数形式存储。实数3.14159在内存中的存放形式如下:

+

.314159

1

数符 小数部分 指数

●小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。
●指数部分占的位数愈多,则能表示的数值范围愈大。
2.实型变量的分类
 实型变量分为:单精度(float型)、双精度(double型)和长双精度(long double型)三类。
 在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。
双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

类型说明符

比特数(字节数)

有效数字

数的范围

float

32(4)

6~7

10-37~1038

double

64(8)

15~16

10-307~10308

long double

128(16)

18~19

10-4931~104932

实型变量定义的格式和书写规则与整型相同。

例如:

float x,y; (x,y为单精度实型量)

double a,b,c; (a,b,c为双精度实型量)
3.实型数据的舍入误差

由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。如下例。

【例3.6】实型数据的舍入误差。
main()
{float a,b;
a=123456.789e5;
b=a+20
printf("%f\n",a);
printf("%f\n",b);
}

注意:1.0/3*3的结果并不等于1。

【例3.7】
main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}

●从本例可以看出,由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。

●b 是双精度型,有效位为十六位。但Turbo C 规定小数后最多保留六位,其余部分四舍五入。