C连载12-float类型上下溢以及打印格式说明

Posted ruigege0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C连载12-float类型上下溢以及打印格式说明相关的知识,希望对你有一定的参考价值。

一、打印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该值的时候会显示infinfinity
  • 当计算导致数字过大,超过了当前类型所能表达的范围时,就会发生下溢
  • 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大数据学习视频礼包
    • 技术图片

以上是关于C连载12-float类型上下溢以及打印格式说明的主要内容,如果未能解决你的问题,请参考以下文章

C连载13-复数类型以及基本数据类型总结

C连载17-明示变量以及两种头文件举例

《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互

(C语言)unsigned long类型变量输出时,格式转换说明符应如何定义?

音视频连载-010第二季 FFmpeg 日志打印

《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动视图驱动服务实例的挂载