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

    技术2024-11-24  17

    一、打印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 \n", aboat, aboat); //下一行要求编译器支持C99或其中的相关特性 printf("And it's %a in hexademical,power of 2 notation\n", aboat); printf("%f can be written %e\n", abet, abet); printf("%Lf can be written %Le\n", 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\n", a); return 0; }

    运行显示:

    三、源码:

    D12_1_showf_pt.cD12_2_Floaterr.chttps://github.com/ruigege66/CPrimerPlus/blob/master/D12_1_showf_pt.chttps://github.com/ruigege66/CPrimerPlus/blob/master/D12_2_Floaterr.c:https://blog.csdn.net/weixin_44630050博客园:https://www.cnblogs.com/ruigege0000/欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流,后台回复“礼包”获取Java大数据学习视频礼包
    Processed: 0.061, SQL: 9