高二C语言基础
第一章 1.1 C语言概述
第一章 1.2 C语言的特点
01.VS开发环境的搭建
02.第一个C语言程序
03.C语言基础语法知识
04.整型数据类型
05.浮点数据类型
06.变量与常量
07.字符常量及字符变量
08.printf函数详细解析(上)
汝城县职业中等专业学校知识库-信息中心朱老师编辑
-
+
首页
05.浮点数据类型
05.浮点数据类型
## 1、浮点数据类型 ### 1. 处理带小数的数值 我们来讨论一下类似于1.234567,0.00001,这类非整数的数据。我们可以先试试看,int能不能装这些数据呢? ``` #include <stdio.h> int main() { int a = 1.234567; int b = 0.00001; int c = 365.12345; printf("%d\n", a); printf("%d\n", b); printf("%d\n", c); return 0; } ```  **好像不太行,小数部分都丢失了。那怎么办呢? 这时候我们就需要引入新的类型了——浮点类型。** ### **2. 浮点类型:float** 我们把上面代码中的整型 int ,用单精度浮点型 float 替代。 之后,再将 printf("%d\n",a); 中的占位符是 %d ,所以我们用 %f 替换。( %d 占位符用于整型, %f 占位符用于浮点型) 替换完成之后,我们再来试试看。 ``` #include <stdio.h> int main() { float a = 1.234567; float b = 0.00001; float c = 365.12345; printf("%f\n", a); printf("%f\n", b); printf("%f\n", c); return 0; } ```  **将 int 替换成 float 之后,大部分的数据都是正确的。但是 365.12345 变成了 365.123444 ,很明显精度出现了误差。这是因为,浮点数并不能表示无限的精确,它会存在着一定的误差。** ### C标准规定,float类型必须至少能表示6位有效数字,并且取值范围至少是10^-37~10+37。 **所以,使用float来装365.12345时,前面六位数值是准确的,但是后面的数值略有误差。** ### 3. 浮点类型:double 有没有比float,精度更高的类型呢?有的,叫做双精度浮点型 double 。我们把上面代码中的 float 换成 double 。那么 printf函数 中使用的占位符需要修改吗? 答案是不需要,我们先记住float和double均可以使用 %f 来作为占位符。 ``` #include <stdio.h> int main() { double a = 1.234567; double b = 0.00001; double c = 365.12345; printf("%f\n", a); printf("%f\n", b); printf("%f\n", c); return 0; } ```  这次 365.12345 也是正确的了。 但是,请注意 double 类型也是有精度范围的。如果是更高精度的数据, double 也会出现误差。 我们日常的应用中,不会苛求一个精度完美的数值,是会允许存在一定误差范围的。但是,如果涉及高精度领域的计算时,需要额外使用特殊的方法进行数值计算,以尽量减少误差。 ### 4. 浮点类型所占字节大小 按照我们之前对整型的经验,越大范围的整型类型所占的空间越大。 那么对于浮点类型来说,越高精度、越大范围的浮点类型,应该也会占用越大的空间。 我们用sizeof来测量一下float和double分别占用多大的空间。 ``` #include <stdio.h> int main() { printf("sizeof float = %d\n", sizeof(float)); printf("sizeof double = %d\n", sizeof(double)); return 0; } ```  float , double 分别为4,8个字节。验证了我们之前对于越大范围,越高精度的类型所占空间越大的设想。
admin
2025年9月22日 17:26
20
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期