搜索
热搜: NOIP OIer 神牛
查看: 306|回复: 0

浮点数初始化问题

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-1-22 11:13:09 | 显示全部楼层 |阅读模式
double a,b,c;
memset(&a,0x3f,sizeof(a));//double都初始化为0x3f,其实际为一个非常小的数
memset(&b,0x7f,sizeof(b));
c=0x3f3f3f3f3f3f3f3f;

printf(“%lf\n%lf\n%lf”,a,b,c);


输出:
0.000477
1382417208487871530309079876829361519920890827655236399202446373087004409281425975828759961223649754730531017408099857515546836392400417046590332715399634071080623695707883976652716068383393396038903725080647755086048184917192852687494574532544186355366261864363207133093848253625865070671519163486482464768.000000
4557430888798830592.000000

说明:
浮点数不要用整数思维理解
float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:
float:1bit(符号位)+8bits(指数位+23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表