首页 理论教育实型数据及其存储方式

实型数据及其存储方式

【摘要】:实型常量又称为实数,在C语言中又称为浮点数。例如,e3,1.1e2.1,e这些都是不合法的指数形式。表2.2实型数据实型数据在内存中的存储方式与整型数据不同。系统把一个实型数据分成小数部分和指数部分分别存放。实型变量的定义。①实型变量的定义有两种形式,分别表示单精度类型和双精度类型。例2.2实型数据的舍入误差。原因是一个实型变量的有效数字是7位,超过7位后的数字无意义。

在讲实型变量前,先说一下什么是变量?变量就是其值可以改变的量。比如:定义一个整型变量“int n;”,这个“n”的值就可以是:“n=1”,也可以是“n=2”,关键在于你打算怎么赋值。一般情况,变量都有一个名字,这个名字就称为“标识符”。标识符主要用来标识变量名、符号常量名、函数名、数组名、类型名、文件名等。在C语言里,标识符只能由字母、下划线、数字三种符号组成,并且标识符的第一个字符必须是字母或者下划线。

1.实型常量

(1)实型常量的表示方法。

实型常量又称为实数,在C语言中又称为浮点数。实型常量有两种表示形式:

十进制小数形式。它由数字0~9和小数点组成(注意:必须有小数点)。例如,0.123,123.0,.123,0.0都是实数,而89,54就不是实数。

②指数形式。形如123e3或123E3为指数,其书写格式为:<尾数>E<指数>,它所表示的是123×103

注意:字母e或E之前必须有数字,且e后面指数必须为整数,E或e的前后及数字之间不能有空格。例如,e3,1.1e2.1,e这些都是不合法的指数形式。

(2)实型常量的类型。

许多C语言编译系统不区分单、双精度实型常量,都将其统一作为双精度型来处理,以保证运算结果更精确。双精度数据占64位。当然,我们可以在数字的后面加字母f或F(如1.23f,4.56F),这样编译系统就会将数据按单精度数据(32位)处理。

2.实型变量

在讲实型变量前,先说一下什么是变量?变量就是其值可以改变的量。例如,定义一个整型变量“int n;”,这个“n”的值就可以是“1”,也可以是“2”,关键在于你打算怎么赋值。一般情况下,变量都有一个名称,这个名称就称为“标识符”。标识符主要用来标识变量名、符号常量名、函数名、数组名、类型名、文件名等。在C语言里,标识符只能由字母、下划线、数字三种符号组成,并且标识符的第一个字符必须是字母或者下划线。

(1)实型变量的分类。

实型变量分为单精度型(float)、双精度型(double)和长双精度型(long double)3类(见表2.2)。

表2.2 实型数据(www.chuimin.cn)

实型数据在内存中的存储方式与整型数据不同。实型数据是按照指数形式存储。系统把一个实型数据分成小数部分和指数部分分别存放。指数部分采用规范化的指数形式,即在字母e(或E)之前的小数部分中,小数点左边只有一位非零数字(如1.23456E5和3.12345e10)。

(2)实型变量的定义。

①实型变量的定义有两种形式,分别表示单精度类型和双精度类型。定义形式为:

float变量名列表;

double变量名列表;

例如:

(3)实型变量的舍入误差。

由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效数字以外的数字将被舍去,因此可能会产生一此误差。

例2.2 实型数据的舍入误差。

在这个程序中,a和b输出的值是相等的。原因是一个实型变量的有效数字是7位,超过7位后的数字无意义。所以,a+50的值不能准确地表示该数。在做程序设计时,应避免将一个很大的数和一个很小的数相加或相减。