实型数据
5 D$ `3 ?" T4 d$ S7 b5 _
) e- S5 @* v( k7 Y 1 实型常量( a3 f! B3 @" `- @- r
' d! `( h7 D' x6 @* g/ a7 @7 w
实型常量又称实数或浮点数。在C语言中可以用两种形式表示一个实型常量。! Q8 P; T) J! M" u; M
* [3 L3 D3 `2 r: P( [( B& _ 一、小数形式
4 J2 q! o# w, r, W& U
" n0 ?* B6 n. g 小数形式是由数字和小数点组成的一种实数表示形式,例如0.123、.123、123.、0.0等都是合法的实型常量。注意:小数形式表示的实型常量必须要有小数点。
x5 @/ d! u; h# A* q( D % A# ~( b9 y* z/ S$ U
二、指数形式/ `; q P( R) m8 [
( e) L& m* S5 o) U7 }
这种形式类似数学中的指数形式。在数学中,一个数可以用幂的形式来表示,如2.3026可
8 ?- t/ f$ U3 Q @& u 以表示为0.23026×101、2.3026×100、23.026×10-1等形式。在C语言中,则以“e”或“E”后跟一个整数来表示以10为底的幂数。2.3026可以表示为0.23026E1、2.3026e0、23. 026e-1。C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、.5e3.6、.e3、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。 r I* \! S# O4 t3 H! t2 S6 e% p
+ W$ ?, k4 Z$ [ 2 实型变量% W9 a3 k! l! Y
8 G; Z- T4 p% N7 ?( t J; v C语言中实型变量分为单精度型和双精度型两种,分别用类型名float和double进行定义。
/ z$ k, S" t3 B+ @; Z. \ 单精度型变量定义的形式如下:
+ S7 c/ G8 w0 b+ e) i float a,b,c;
: x/ P# d. H8 `8 j2 a' M8 \ 双精度型变量定义的形式如下:
# f t; L7 r& d. a0 j8 G double x,y,z;; `/ A. v5 h. s" P1 R) {
在一般计算机系统中,为float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的存储单元,并按实型数的存储方式存放数据。实型的变量只能存放实型数,不能用整型变量存放一个实数,也不能用实型变量存放一个整数。
- I5 Y4 a! C$ n' Z) t 在VC6.0中单精度实数(float类型)的数值范围约在-1038~1038之间,并提供7位有效数% [% Y& p8 M- d, Y
字位;绝对值小于10-38的数被处理成零值。双精度实数(double类型)的数值范围约在-10308~10308之间,并提供15~16位有效数字位,具体精确到多少位与机器有关;绝对值小于10-308的数被处理成零值。因此double型变量中存放的数据要比float型变量中存放的数据精确得多。注意,在VC6.0中,所有的float类型数据在运算中都自动转换成double型数据。$ j m* z# n3 K" P. M) F
前面已经介绍过,在程序中一个实数可以用小数形式表示,也可以用指数形式表示。但在内存中,实数一律是以指数形式存放的。8 J) Q" n1 M: \+ `9 u: \
注意:在计算机中可以精确地存放一个整数,不会出现误差,但整型数值的数值范围比实数小。实型数的数值范围较整型大,但往往存在误差。 |