第二章 数据类型、运算符与表达式(四)

第二章 数据类型、运算符与表达式(四)

二、C语言的数据类型

3、实型数据

实型数据简称实数,在 C 语言中称为浮点数(带小数部分的数)

1)实型常量的两种表示形式

(1)十进制数表示形式 0.12、3.14159

(2)指数表示形式:

指数表示形式不太常用,但要有所了解,其中字母E可以大写也可小写。

2)实型变量的分类

C 语言中,实型变量分为单精度和双精度两种类型。

(1)float:单精度变量

(2)double:双精度变量

3)实型变量的定义

上面两行代码有什么区别?float型变量一般在内存中占 4 字节, double 型变量一般在内存中占 8 字节,这意味着double 型变量所能保存的数据范围比float 型变量所能保存的数据范围大得多,并且精度高得多(精度后面会详细解释)

浮点数在内存中都是以指数形式存储的,所以能够存储的数据范围大到超乎想象

(1)单精度float: 取值范围为(1 .17549e-038) ~ (3.40282e+038)

(2)双精度 double:取值范围为 (2. 22507e-308)~ (1.7976ge+308)

如何区分float 和 double这两种浮点类型实数?它们的精度不同,float类型实数提供 7 位有效数字(考虑到四舍五入问题,保守算 6 位), double类型实数提供 15-16 位有效数字(考虑到四舍五入问题,保守算15 位),到底多少位有效数字 ,随机器系统而异。

有效数字是什么意思?如数字 12345.678,如果精度是 1 位有效数字,则实际只能存储为10000.0,也就是说,只能把最高位这个值存下,其余位全部都是0

如果精度是 2 位有效数字,则存储为 12000.0 ,也就是能存下最高的两位数值

如果精度是 3 位有效数字,则存储为 12300.0 ,也就是能存下最高的三位数值

如果精度是 7 位有效数字 ,则存储为 12345. 67X,X 表示该位置的数字值并不确定

再看看数字0.1234,如果精度是 1 位有效数字,则存储的可能为 0.1XXXXX,如果精度是2位有效数字,则存储的可能是 0.12XXXX,以此类推

4)调试

调试对于日后顺利进行程序开发非常作用,必须掌握好调试的方法。

注意观察结果abc实际结果为 111111 1. 13,而 cde 变量的实际结果为1111111.1100000001。

很明显, double 数据类型比 float数据类型的数据精度高很多,abc小数点后面从第 2 位开始就已经不是实际所赋的值了 ,而 cde 保存下了所赋值的全部有效位数。

例:

float 的精度是7位有效数字 ,下面的有效数是7位吗?

efg的值显示为1.23456794E+9,值展开后为 1234567940,与原数字1234567898.1234 比较,小数点左侧损失了3位,898变成了940,小数点后的4位1234全部丢失。

例:

受printf输出函数中的%f格式符所限,所以两条 printf语句输出结果都是 12. 345673,不同版本开发工具结果可能会略有差异。

aaa的值是12.34567260742187500000

bbb的值是12.34567291234987607140

上面的结果明显看到,double 数据类型比float数据类型精度高很多,因为double数据类型能保存的有效位数比float 数据类型多得多。

例:

通过断点,查看bb的值,为什么不是0.51,而是0.50999999?

当把一个十进制数值赋给一个实型变量时,计算机会把这个十进制数转换成二进制数保存,当程序执行流程,停在断点上,用鼠标查看这个变量值时,计算机实际上是把它保存的二进制数再转换成十进制数显示出来。

步骤是十进制 → 二进制 → 十进制,在这个过程中存在着一些除法运算,这些除法运算因无法整除的原因,会导致从二进制转换回十进制数时丢失精度。

例如日常生活中用10除以3,那么结果是3. 33333…,永远无法整除,是一样的道理。

受printf输出函数中的%f格式符所限,所以 printf语句输出bb的结果是0.510000。

相关推荐

豪门盛宴
bt365手机官方网址

豪门盛宴

📅 06-28 👁️ 3241
戴维是什么意思
bt365手机官方网址

戴维是什么意思

📅 07-29 👁️ 7877
『西游攻略组』秘境寻踪流程以及介绍
365体育亚洲官方入口app下载

『西游攻略组』秘境寻踪流程以及介绍

📅 09-03 👁️ 970
东南亚黑马马来西亚创造奇迹,晋级世预赛18强赛!
365体育亚洲官方入口app下载

东南亚黑马马来西亚创造奇迹,晋级世预赛18强赛!

📅 07-18 👁️ 8736
win7系统多彩便签如何卸载?win7系统卸载多彩便签的方法
365体育亚洲官方入口app下载

win7系统多彩便签如何卸载?win7系统卸载多彩便签的方法

📅 07-15 👁️ 6650
dnf远古遗愿哪个地图出
bt365手机官方网址

dnf远古遗愿哪个地图出

📅 09-03 👁️ 8995