浮点类型(double与float及其它们的输入输出)
1.整数的类型(4)整数的格式化及整数类型选择
2.浮点类型(double与float及其它们的输入输出)
3.数据类型4.整数类型(1)5.整数类型(2)6.整数类型(3)7.字符类型8.逃逸字符与类型转换9.对数据类型进行补充——逻辑类型及运算<1>浮点类型
(1)两种类型
- double 字长64位(8个字节),有效数字15,范围大概为2.2* 10^-308 ~ 1.79*10^308,0,nan;
- float字长32位(4个字节),有效数字7,范围大概为1.2 * 10^-38 ~3.4*10^38,0,nan;
————注明-nan:不是一个有效数字
由两种浮点类型的范围建立数轴可知:在靠近0但不包括0的一小片区域我们无法表达(这片区域关于0左右对称)
(2)类型对应的输入输出
- float 输入%f 输出%f,%e;
- double 输入%lf 输出%lf,%e;
注:%e意为输出一个科学计数法
以一段代码为例:
#include<stdio.h>
int main(){
double ff=1234.56789;
printf("%e\n %f",ff,ff);
return 0;
}输出的结果为1.234568e+003
1234.567890
(3)引申:科学计数法
举例:-5.67E+16
- 整体的第一个+-可选;
- e/E都可以;
- 不能出现空格;
- 整体的第二个+-号可以省略;
- 小数点可选;
(4)保留小数点后几位数时涉及四舍五入的问题
以一段代码举例:
#include<stdio.h>
int main(){
printf("%.3f\n",-0.0049);
printf("%.30f\n",-0.0049);
printf("%.3f\n",-0.00049);
return 0;
}得出的结果为:-0.005
-0.004899999999999999800000000000(接近原数,小于原数)
-0.000
<2>浮点数的范围与精度
(1)超过浮点数的范围
- printf输出inf表示超过范围的浮点数;
- printf输出nan表示不存在的浮点数;
一个数除以0得到的数为无穷大,以一段代码为例:
#include<stdio.h>
int main(){
printf("%f\n",12.0/0.0);
printf("%f\n",-12.0/0.0);
printf("%f\n",0.0/0.0);
return 0;
}得出的结果为:1.#INF00
-1.#INF00
-1.#IND00
同时我们还需要注意:整数不能除以0-例如12/0,编译就不会通过;
(2)浮点的精度
————浮点没有精度
1)我们可以通过一段代码来分析浮点数是否有精度
#include<stdio.h>
int main(){
float a,b,c;
a=1.345f;
b=1.123f;
c=a+b;
if(c==2.468)
printf("相等");
else
printf("不相等,c=%.10f或%f\n",c,c);
return 0;
}得出的结果为:不相等,c=2.4679999352或2.468000;
由此可见:浮点没有精度
注意:
仅带小数点的字面量是double而非float;
因此加后缀f/F来表明变量类型为float;
2)运算中应注意的问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了