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 语言程序设计 2001 年 5 月 1 日
标准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
double
long double
32(4)
64(8)
128(16)
6~7
15~16
18~19
10-37~1038
10-307~10308
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);