zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    洛谷 P1692 部落卫队
    洛谷 P1113 杂务
    洛谷 P1546 最短网络 Agri-Net
    洛谷 P2121 拆地毯
    洛谷 P2728 纺车的轮子 Spinning Wheels
    洛谷 P2126 Mzc家中的男家丁
    线段树双标记——乘法和加法
    A. Feed the cat
    洛谷 P1535 游荡的奶牛
    BZOJ1050 [HAOI2006]旅行
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13233436.html
Copyright © 2011-2022 走看看