- 各种整数类型对大多数软件开发项目而言够用了。然而,面向金融和数学的程序经常使用浮点数。C语言中的浮点数类型有float、double和long double类型
- 浮点类型能表示包括小数在内更大范围的数,浮点数的表示类似于科学计数法。指数计数法(或被称为e计数法),这是科学计数法在计算机中的写法,e后面的数字代表10的指数
- C标准规定,float类型必须至少能表示6位有效数字。通常存储一个浮点数要占用32位。其中8位用于表示指数值和符号,剩下24位用于表示非指数部分(也叫做尾数或有效数)及其符号
- double(双精度):最小取值范围与float类型相同,但至少能表示10位有效数字。一般情况下,double占用64位而不是32位。double类型的有效数字有13位,超过了标准的最低位数规定
- long double(拓展双精度):C只保证long double类型至少与double类型精度相同。long double类型在不同的平台和编译器下有不同的精度和表现,具体使用时应参考特定环境的文档和规范
浮点型常量
- 浮点型的基本常量是:1.正常小数。2.有符号的数字(包括小数点),后面紧跟e或E,最后一个是有符号数表示10的指数。
- 正号可以省略
- 不要在浮点型常量中间加空格
- 默认情况下,编译器假定浮点数常量是double类型的精度。使用双精度进行运算,然后将结果截断成float类型的宽度。这样做精度更高,但是会减慢程序的运行速度。在浮点数后面加上f或F后缀可覆盖默认设置,编译器会将浮点数常量看作float类型。
- C99标准添加了用十六进制表示浮点数常量,即在十六进制数前加上十六进制前缀0x或0X,用p和P分别代替e和E,用2的幂代替10的幂。即p技术法
打印浮点值
- printf()函数使用%f转换说明打印十进制计数法的float和double类型浮点数,用%e打印指数计数法的浮点数。如果系统支持十六进制格式的浮点数,可用a和A分别代替e和E。
- 打印long double类型要使用%Lf、%Le或%La转换说明。
- 给那些未在函数原型中显式说明参数类型的函数传递参数时,C编译器会把float类型的值自动转换成double类型
浮点值的上溢和下溢
- 上溢(overflow),当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。这种情况会赋给变量一个表示无穷大的特定值,inf或infinity
- 下溢(underflow)。C语言把损失了全精度的浮点值称为低于正常的(subnormal)浮点值
- 特殊的浮点值NaN(not a nnumber),用于表示无效的或未定义的浮点数运算结果。NaN通常用于指示数学运算无法产生有效结果的情况
- 浮点数的复数和虚数类型,待了解
其他类型
- C语言还有基本类型衍生的其他类型,包括数组,指针,结构和联合。
类型大小
- sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。C99和C11提供%zd转换说明匹配sizeof的返回类型(即size\_t类型)
最后修改:2024 年 03 月 02 日
© 允许规范转载