• 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;
    }
     

    运行结果:
    12.1

    二、浮点值的上溢和下溢

    • 当计算导致数字过大,超过了当前类型所能表达的范围时,就会发生上溢
    • 这种行为过去是未定义的,现在会赋值一个无穷大的值,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;
    }
     

    运行显示:
    12.2

    三、源码:

      • 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大数据学习视频礼包
      • 20.4
  • 相关阅读:
    9ch
    thymeleaf 的使用(三)--举例使用
    thymeleaf 的使用(二)--基本语法
    thymeleaf 的使用(一)--导入和基本操作
    SpringBoot对静态资源的映射规则
    第一个Spring Boot项目
    HTML文本换行问题
    判断for(var i=0;i<=3;i++){ setTimeout(function() { console.log(i) }, 10) }
    js的执行机制——宏任务和微任务
    v-if 和 v-show 的区别
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13233436.html
Copyright © 2020-2023  润新知