C语言中单精度和双精度浮点型数据的数值范围是多少?怎么算出来的?请大虾帮忙了!

C语言中单精度和双精度浮点型数据的数值范围是多少?怎么算出来的?请大虾帮忙了!如题,最好能给出详尽的解释,谢谢大虾了!

    今天看书也是发现了这个问题但是百度一番网上并没有想要的答案,思索后得出结果,首先浮点型是32位精度 有一个符号位8个指数位23个尾数位

关于精度的计算单精度8位阶码,1位符号,剩下23位尾数,算出2的负23次方,得到0.00000011920928955078125
前面0有多少个,就表示能精确到那一位,所以精度为6提供七位有效数字
双精度11位阶码,1位符号,剩下52位尾数,算出2的负52次方,得到0.00000000000000022204460492503130808472633361816
所以精度为15,提供16位有效数字。


然后关于范围的计算:范围是指数位控制的,指数位为8,有效为为7(这里涉及到余码,有兴趣的同学可以查看相关资料)所以最大范围为2^7=128 这里是指数部分 化为十进制则为

2^128=3.402823669384635E38

所以范围为3.4E-38~3.4E+38

double同理

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-03
float(单精度说明符),double(双精度说明符)单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
第2个回答  2014-01-03
Type
Minimum value
Maximum value
float
1.175494351 E – 38
3.402823466 E + 38
double
2.2250738585072014 E – 308
1.7976931348623158 E + 308
MSDN上都有
float 4字节32位,1符号位,8位的指数位,再加上23位尾数
double 8字节64位,1符号位,11位指数,52位尾数本回答被网友采纳
第3个回答  2014-01-03
根据“字节”算出来的啊
4个字节的2进制,与8个字节的2进制,表示的范围、数字大小、明显不一样,
第4个回答  2014-01-03
float的有效数字是6~7位,double的有效数字是15~16位。。。是怎么算出来的?