一、打印float类型
- %f来表示float和double类型的数字
- %e来打印指数记数法的浮点数
- 如果系统支持十六进制的浮点数,可以使用a和A分别来代替e和E
- 打印long double类型要使用%Lf或%Le或%La来替代
#include<stdio.h> int D12_1_showf_pt(void) { float aboat = 32000.0; double abet = 2.14e9; long double dip = 5.32e-5; printf("%f can be written %e ", aboat, aboat); //下一行要求编译器支持C99或其中的相关特性 printf("And it's %a in hexademical,power of 2 notation ", aboat); printf("%f can be written %e ", abet, abet); printf("%Lf can be written %Le ", dip, dip); return 0; }
运行结果:
二、浮点值的上溢和下溢
- 当计算导致数字过大,超过了当前类型所能表达的范围时,就会发生
上溢
- 这种行为过去是未定义的,现在会赋值一个
无穷大
的值,printf
该值的时候会显示inf
或infinity
。 - 当计算导致数字过大,超过了当前类型所能表达的范围时,就会发生
下溢
- C语言把损失了类型全精度称为
低于正常值
的浮点值。 - C库已经提供了用于检查计算是否会产生一个低于正常值的函数。
#include<stdio.h> int D12_2_Floaterr(void) { float a, b; b = 2.0e20 + 1.0; a = b - 2.0e20; printf("%f ", a); return 0; }
运行显示:
三、源码:
- D12_1_showf_pt.c
- D12_2_Floaterr.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D12_1_showf_pt.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D12_2_Floaterr.c
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客园:https://www.cnblogs.com/ruigege0000/
- 欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流,后台回复“礼包”获取Java大数据学习视频礼包