当前课程知识点:高级语言程序设计 > 顺序结构程序设计 > 2.2 数据类型 > 实型数据
大家好
本讲介绍C语言的实型数据
在日常生活中
我们不仅要用到整数
还要用到带小数的实数
那么计算机中是如何存储实型数据的呢
在C语言中实型也叫浮点型
浮点型数据有多种类型
在VC++2010开发环境下
flight类型数据占四个字节
double类型占八个字节
long double数据也占八个字节
无论float型还是double型
在内存中存储主要分为三个部分
符号位 指数位 有效数字位
在介绍实型数据的存储方式之前
我们先来了解一下有效数字的概念
一个数的有效数字
是从该数最左边不为0的数字数起
是最右边不为0的数字
这两个数字之间的每一个数字位
这些数字位的个数都称为该数的有效数字位数
我们来看一下
比如说3500
它的有效数字只有两位 3和5
负0.278
它的有效数字有三位278
我们还要注意
如果一个数带有指数部分
比如说3.14乘以10-6
它的有效数字只有三位3.14
314×10-5
它的有效数字也是314
浮点数
在内存中是按指数形式存放的
比如说3.14159
在内存中是把它转换成3.14159×102
分尾数部分和阶码来存储的
尾数部分的宽度决定了有效数字的个数
阶码部分的宽度决定了数字位数
符点型常量有两种形式
十进制小数形式
指数形式
注意指数形式的表示形式
在1的前后一定要有数字
在1的后面务必是整数
1.31E3.5是不合法的浮点型常量
我们来看一下浮点型变量
a是float型变量
b是double型变量
123456.789是double型常量
一个double型常量
既可以赋给float型变量
也可以赋给double型变量
只是这两种类型的变量接收的有效数字位数不同
符点型变量的输出
也是用printf函数
float型和double型对应的格式说明符都为%f
看一下这个代码
这个程序里有两个变量
f为float
d为double型变量
那么给这两个变量赋值
都赋1234567890
我们来看看运行结果
a得到的数字是1234567936
d得到的数字是1234567890
从这个结果可以看得出来
float型变量仅能接收七位有效数字
而double型变量可以接收16位有效数字
现在我们来看看float型变量的输入
float型变量也是用scanf函数来输入的
注意这里要强调一点
float型变量的输入的格式字符为%f
double型变量它对应的格式说明字符为%lf
看一段代码
a为float型
d为double型
这里f的值
对应的字符格式是%f
d对应的格式字符为%lf
这样才能正确地将我们从键盘输入的数据
送到f和d中去
再来看一下数据类型转换
不同类型的数据一起参加运算
比如说整数可以和字符相加
也可以和实数相加
再进行运算时
不同类型的数据要先转换为同一类型
然后进行运算
数据类型转换方式有两种
一种是自动转换
数据类型自动由低级向高级转换
强制类型转换
将表达式的值强制转换为指定的数据类型
先来看一下自动类型转换
这种转换是由编译器自动完成的
它的转换规则是如图所示
横向的箭头表示必做的转换
纵向的箭头表示
当运算对象类型不同时的转换方式
再来看一下强制类型转换
我们可以通过下面的方法
把表达式的值转化为指定类型
定义一个float型变量x
它的值是10.9
再定义一个整型变量y
我们可以把x的值强制转换成整型赋给y注意
是把10.9强制转换为整形赋给了y
那么x的值呢
没有发生变化
X的值还是10.9
再来看一个代码
在这里有两个整型变量
total的值是15
number的值是2
如果我们想求两个整型变量的平均值
直接用这个除法运算符
那么得到的average是7还是7.5
我们来看一下
total和number都是整型变量
那么按整型变量的除法的运算规则
得到的结果为7
average虽然是float型变量
但是最后它的值还是7
两个整数运算的结果还是整数
不是浮点数
那如果我们想得到浮点数7.5
我们可以用强制类型转换
先将total的值的类型转换成float类型
然后一个float类型的数据
去跟整数相除
结果就是一个浮点型的数据了
来看 先将15强制类型转换为15.0
变成实型数据
15.0去与2相除结果是7.5
最终average变量得到的值是7.5
小结一下
今天我们讲了负数的表示范围及误差
float型常量和变量的格式规范以及使用
double型常量和变量的格式规范以及使用
数据类型的自动转换与强制类型转换
今天的内容就讲到这里
谢谢大家
-1.1 计算机程序和计算机语言
-1.2 C程序的构成
--C程序的构成
-1.3 C语言编辑、编译、运行(VC++2010学习版)
-练习题
-2.1 变量的定义和使用
--变量的定义和使用
-2.2 数据类型
--数据类型简介
--整型数据
--实型数据
-2.3 格式输出和格式输入
-2.4 运算符和表达式
--运算符和表达式
-2.5 结构化程序设计入门
-练习题
-3.1 为什么要用选择结构解决问题
-3.2 如何正确表示选择结构中的条件
-3.3 用if语句及if语句嵌套实现选择结构
-3.4 用switch语句实现选择结构
-练习
-4.1 循环的引入
-4.1 循环的引入--作业
-4.2 用while语句实现循环
-4.3 用do-while语句实现循环
-4.4 用for语句实现循环
-- 用for语句实现循环
-4.4 用for语句实现循环--作业
-4.5 何时需要用循环的嵌套
-4.6 如何提前终止循环和提前结束本次循环
-习题--作业
-5.1 数组类型的引入
--数组类型的引入
-5.2 一维数组的定义和初始化
-5.3 一维数组的使用
--一维数组的使用
-5.4 二维数组的定义和初始化
-5.5 二维数组的使用
--二维数组的使用
-习题--作业
-6.1 什么是指针
--什么是指针
-6.2 指针类型及相关概念
-6.3 指针变量的定义、赋值与使用
-6.4 指针的运算
--指针的运算
-6.5 指针与一维数组
--指针与一维数组
-6.6 指针的指针
--指针的指针
-6.7 指针与二维数组
--指针与二维数组
-习题--作业
-7.1 为什么要自定义函数
-7.2 函数的定义
--函数的定义
-7.3 函数的调用
--函数的调用
-7.4 函数参数的传递
--函数参数的传递
-7.5 函数的嵌套调用和递归调用
-7.6 变量的作用域和存储类型
-习题--作业
-8.1 字符串的存储及输入输出
-8.2 系统字符串处理函数
-8.3 自定义字符串处理函数
-习题--作业
-9.1 结构体类型的定义
--结构体类型的定义
-9.2 结构体变量及指针变量的定义及使用
-9.3 结构体变量和指针变量作函数的参数
-9.4 结构体数组的定义和使用
-9.5 共用体类型和枚举类型
--共用体和枚举类型
-习题--作业
-动态内存分配--习题
-习题--作业