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

运行结果:
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\n", 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值