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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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同理

参考技术A float(单精度说明符),double(双精度说明符)单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。 参考技术B 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位尾数
参考技术C 根据“字节”算出来的啊
4个字节的2进制,与8个字节的2进制,表示的范围、数字大小、明显不一样,
参考技术D float的有效数字是6~7位,double的有效数字是15~16位。。。是怎么算出来的?

浮点型数据的精度是啥意思

浮点型数据的精度即使用多少位来存储。

一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。

单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位,符号位1位,双精度则为11为阶,53位尾数和1位符号位。

扩展资料:

浮点数的相关存储格式:

IEEE754标准中浮点数表示格式IEEE规定的浮点数表示法是一种科学计数法,用符号(正或负)、指数和尾数来表示,底数被确定为2。也就是说浮点数被表示为尾数乘以2的指数次方再带上符号。

符号域:符号域占1位,0表示正数,1表示负数。指数域:指数域共有8位,可表达的范围为:0~255。为能处理负指数,实际指数位存储在指数域中值减去一个偏移量(单精度为127,双精度为1023)。

单精度浮点数的偏移量为127,故实际可表达的指数值的范围为-127~128。尾数域:尾数域共有23位。

参考资料来源:百度百科-浮点数

参考资料来源:百度百科-单精度

参考资料来源:百度百科-浮点型数据

参考技术A

浮点型数据的精度取决于浮点小数结构:

32位单精度浮点型数的二进制位的第0-22位为2进制小数尾值,决定了它的精度在2的负23次方,1/(2^23)=0.0000001

64位双精度浮点型数的二进制位的第0-52位为2进制小数尾值,决定了它的精度在2的负52次方,1/(2^52)=2.2e-16

扩展资料:

浮点数的相关存储格式:

IEEE754标准中浮点数表示格式IEEE规定的浮点数表示法是一种科学计数法,用符号(正或负)、指数和尾数来表示,底数被确定为2。也就是说浮点数被表示为尾数乘以2的指数次方再带上符号。

符号域:符号域占1位,0表示正数,1表示负数。指数域:指数域共有8位,可表达的范围为:0~255。为能处理负指数,实际指数位存储在指数域中值减去一个偏移量(单精度为127,双精度为1023)。

参考资料来源:百度百科-浮点数 (有理数)

参考技术B

浮点型数据的类型有两种,一是单精度浮点数,二是双精度浮点数。

浮点型数据的精度取决于浮点小数结构:

32位单精度浮点型数的二进制位的第0-22位为2进制小数尾值,决定了它的精度在2的负23次方,1/(2^23)=0.0000001

64位双精度浮点型数的二进制位的第0-52位为2进制小数尾值,决定了它的精度在2的负52次方,1/(2^52)=2.2e-16

在文本框输出时

32位浮点型数有7位小数精度(十进制)           .3333333

64位浮点型数有15位小数精度(十进制)         .333333333333333

要超过这精度要求需要将数据类型定义为Decimal(VB6.0)数据类型,它有28位小数精度(十进制)

参考:

http://www.fmddlmyy.cn/text60.html

http://wenku.baidu.com/link?url=xl7cAlbK5r3z5g9w1UdJn5r0wMHzIR3K2svZiFEeX2oDjusyptfIRiFAYFGsABaRFIw-Bip7My_u-S6-HhgCYilP9ZcuerJ-MYcuoRnR_63

参考技术C 浮点型数据又称单精度浮点数,精度表示的是该浮点数的取值范围。。。
单精度类型:+-3.4*10^(-38)~~~+-3.4x10^38 单精度占用4个字节的内存
双精度类型:+-1.7*10^(-308)~~~+-1.7*10^308 双精度占用8个字节的内存本回答被提问者采纳
参考技术D 就是你数值的取值范围,单精度的取值范围比双精度的要小

以上是关于C语言中单精度和双精度浮点型数据的数值范围是多少?怎么算出来的?请大虾帮忙了!的主要内容,如果未能解决你的问题,请参考以下文章

浮点型数据的精度是啥意思

C 语言中双精度浮点型精度怎样保留位数

什么是浮点型数据

c语言中啥是单精度型和双精度型???各举个例子。。。

C# 中浮点和双精度数据类型的实际范围是多少?

C语言编程序时怎么控制浮点型输出的小数点精确到几位