码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-04 01:43:16      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:未定义   csdn   sdn   stat   meta   leo   com   custom   十六进制   

一、打印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该值的时候会显示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\n", 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类型上、下溢以及打印格式说明

标签:未定义   csdn   sdn   stat   meta   leo   com   custom   十六进制   

原文地址:https://www.cnblogs.com/ruigege0000/p/13233436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!