C语言实数型数据

C语言实数型数据,实数型数据表示的实际上就是带小数的数值,又称为浮点型数据。实数型数据分为单精度实数型(float)、双精度实数型(double)和长双精度实数型三种,长双精度实数型数据一般情况下很少用到。它们表示数值的方法是一样的,区别在于数据的精度、取值范围以及在内存中占用的存储空间有所不同,如表所示。

C语言实数型数据

不同类型的实数型数据有效数字不同。例如,实数123456789 在单精度实数型数据的取值范围内,有效数字为7~8个,但它的有效数字超过了8个,如果将它赋给一个单精度实数型变量,该数的最后一位就失去了有效数字,变成了一个随机数,降低了精度。

实数型常量

在程序运行过程中不能被改变其值的实数型数被称为实数型常量。实数型常量在C语言中又称为浮点数。实数型常量有两种表示形式。

1.小数表示法
C语言中实数只能使用十进制小数表示,不能用八进制或十六进制表示。这种形式由符号、整数部分、小数点和小数部分组成,其格式如下:

        ±整数部分.小数部分

其中整数部分或小数部分允许省略,但不能同时省略,即“14.0”可以写成“14.”或“14”;“0.15”可以写成“.15”,而“0.0”不能写成“.”。数前面的“±”表示数的符号,“+”表示数为正数,可以省略,“-”表示数为负数,不能省略。小数点是小数部分的标志,不能省略。例如25.6、-67.15、-.0014、0.48,这些都是正确的小数形式的实数。

2.指数表示法
用指数形式表示特别大或特别小的数值。指数形式的实数由尾数部分、字母E或e和指数部分组成。其格式如下:

        ±尾数部分E(e)±指数部分

其中尾数部分是十进制实数,指数部分是十进制短整型常量。尾数前面的“±”决定这个数的正负,后面的“±”决定指数的大小。指数部分只能是整数,并且指数形式的三个组成部分都不能省略。例如5.154E-12、54.12e+0.5、0.12e-25、-21.563e9,这些都是正确的指数形式的实数。

指数形式的表示方法实际等价于:

        ±尾数部分*10±指数部分

因此,12.3e3等价于12.3*1030.12E+5等价于0.12*105

计算机在用指数形式输出一个实数时,是按规范化的指数形式输出的。所谓规范的形式即在字母E或e的尾数部分中,小数点左边应有且只有一位非零的数字。例如,10023.45可以表示为0.1002345e+5、1.002345e+4、10.02345e+3等,其中只有1.002345e+4才是规范化的指数形式。需要说明以下几点:

  • 实数型常量的类型都是双精度浮点型。
  • 实数在计算机中只能近似表示,运算中也会产生误差。
  • 小数部分和指数部分具体有多少位,没有具体的标准,不同的编译系统有不同的规定。

小数部分越多,精确度越高;指数部分越多,数值的范围就越大。

实数型变量

在程序运行过程中可以改变其值的实数型数被称为实数型变量。实数型变量分为单精度(float)、双精度(double)和长双精度三种类型。在定义实数型变量时用以下方式:

        float x;               /*定义float型变量x*/
        double y;              /*定义double型变量y*/
        long double z,         /*定义long double型变量z*/

对于实数型常量不区分float型和double型。一个实数型常量可以赋给一个float型或double型变量。根据变量的类型截取实数型常量中相应有效数字,在有效位以外的数字将被舍去,因此会产生一定的误差。

        #include <stdio.h>
        void main()
        {
            float x;                         /*定义float型变量x*/
            x=7.123456789;                   /*对float型变量x赋值*/
            printf("%12.10f",x);             /*以总长度为12,小数点位数占10位的形式输出x*/
        }

程序运行的结果为:7.1234569550。由此可以看出,float型的数据只接收到7位有效数字,后面的数字是一些无效的数值。但是在很多时候,虽然数字在浮点数表示的范围之内,但是由于有效数字的限制,也会产生误差。

赞(0)

评论 抢沙发

评论前必须登录!