数据类型说明实型
1 实型常量的表⽰⽅法
实数⼜称浮点数,实数有两种表⽰形式。
(1)⼗进制⼩数形式,它由数字和⼩数点组成(注意必须有⼩数点)
如:.123(0.123), 123.(123.0)
(2)指数形式
如:123e3或123E3都代表123*10^3,但注意字母e或E之前必须有数字,且e后⾯的指数必须为整数。
2 实型变量
2.1 实型数据在内存中的存放形式
⼀个实数数据⼀般在内存中占4个字节(32位)与整型数据的存储⽅式不同,实型数据是按指数形式存储的,系统把⼀个实型数据分成⼩数部分与指数部分,分别存放。指数部分采⽤规范化的指数形式。
如:3.14159 的存放形式如下
+ .314159 1
第⼀部分符号‘+’表⽰符号 +
第⼆部分 .314159 表⽰⼩数部分
第三部分 1 表⽰指数 10^1float数值范围
实际上在计算机中是⽤⼆进制数来表⽰⼩数部分以及⽤2的幂次来表⽰指数部分
在4个字节(32位)中,究竟⽤多少位表⽰⼩数部分,多少位来表⽰指数部分,标准C并⽆具体规定,由各C编译系统⾃定,不少C编译系统以24位表⽰⼩数部分(包括符号)以8位表⽰指数部分(包括指数的符号)⼩数部分占的位数越多,数的有效数字就越多精度就越⾼,指数部分占的位数越多,刚能表⽰的数值范围越⼤。
2.2 实型变量的分类
C实型变量可分为:
单精度(float) 32位有效数字 6~7位数值范围 10^-37 ~ 10^38
双精度(double)64位有效数字 15 ~16位数值范围 10^-307 ~ 10^308
长双精度型(long double)128位有效数字 18 ~ 19 位数值范围 10^-4931 ~ 10^4932
2.3 实型数据的舍⼊误差
由于实型变量是⽤有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此可能会产⽣⼀些误差。看下⾯的程序
#include <stdio.h>
void main()
{
float a, b;
a = 123456.789e5;
b = a + 20;
printf("%f\n", b);
}
运⾏的结果是 12345678848.000000
不是想像是 12345678920
可以看到前8位是准确的,后⼏位不是准确的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论