float的范围和有效数字怎么算出来的?

范围是3.4E-38 ——3.4E+38,可提供7位有效数字。这两个量是怎么来的?

首先说一下:
范围是3.4E-38 ——3.4E+38,可提供7位有效数字。
上述这两个量都是近似值,各个编译器不太一样的。

下面我就将标准值是怎么定义的,和你说一下:
这个比较复杂,建议你找一下IEEE754标准看一下。
这个简单说一下吧:
在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。float有32bit,double有64bit。它们的构成包括符号位、指数位和尾数位。
这些位的构成如下:
种类-------符号位-------------指数位----------------尾数位----
float---第31位(占1bit)---第30-23位(占8bit)----第22-0位(占23bit)
double--第63位(占1bit)---第62-52位(占11bit)---第51-0位(占52bit)

取值范围主要看指数部分:
float的指数部分有8bit(2^8),由于是有符号型,所以得到对应的指数范围-128~128。
double的指数部分有11bit(2^11),由于是有符号型,所以得到对应的指数范围-1024~1024。

由于float的指数部分对应的指数范围为-128~128,所以取值范围为:
-2^128到2^128,约等于-3.4E38 — +3.4E38

精度(有效数字)主要看尾数位:
float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-11
就是2的N次方
原因计算机储存最小位bit,1bit就是1个“0”或者1个"1"。

你的题目有点错误,是-3.4E38---3.4E38,二进制数首位不表示数值,表示正负。

具体是2的好多次方不重要吧,需要的话用电脑上的计算器算换算下就是

float的范围和有效数字怎么算出来的?
float的指数部分有8bit(2^8),由于是有符号型,所以得到对应的指数范围-128~128。double的指数部分有11bit(2^11),由于是有符号型,所以得到对应的指数范围-1024~1024。由于float的指数部分对应的指数范围为-128~128,所以取值范围为:-2^128到2^128,约等于-3.4E38 — +3.4E38 精度(有效数字...

float变量问题
所以float的可表示范围是:2*2^-126 ~2*2^128 = -1.20 × 10^38 到 +3.4 × 10^38 最大可表示数的数量是:2*2^23=8388608个 以10为底的对数为(这一步是看它在10进制能表示最高的指数):lg(2*2^23)=6.92,所以有效数字为6-7位,在其范围外,所有的数字将变的不稳定 所以...

c 语言中,为什么float型 对应的小数部分是6位?为什么
float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bits(指数位)23bits(尾数位)double:1bit(符号位)11bits(指数位)52bits(尾数位)在数学中,特别是在计算机相关的数字(浮点数)问题的表述中,有一个基本表达法[1...

C语言中float有7到8个有效数字,为什么呢?各位大神能否回答一下呢?
由于float的指数部分对应的指数范围为-128~128,所以取值范围为:-2^128到2^128,约等于-3.4E38 — +3.4E38 精度(有效数字)主要看尾数位:float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位

浮点型变量取值范围怎么得来的?
符号位的0为正,1为负;指数位共8位,可表示0~255或者-126~128;由于其取值范围由指数来定,剩余尾数23位最多可表示223个有效数字,用log计算,log10(2*223)=6.92,因此其有效数字为6~7位。浮点数表示法利用科学计数法来表达实数(real),当计算的表达式有精度要求时被使用。例如,计算平方根...

float与double用法
float的精度只有6~7位,也就是最多只有前7位5153960是准确的,再往后都是无效值,1000只有3位在无效值的范围内,所以不论加减1000都不能得到正确结果。而double的精度有15~16位,这个数在double的精度范围内,所以可以得到正确结果。

如何确定float,double,longdouble型的数值范围,是怎么确定的呢?怎么...
其中a,b只有0,1两个值,d为23位二进制码 当d全为1,d*2^-23=0.34(约等于),c最大值为127,2^(127)=10^39 所以取值范围是 ( +- 3.4)*10^(+-38),23位阶码有效数字换成10进制最多7位,所以精度较低。。。其他的算法都一样,只是double得是11位尾数,52位阶数,范围更大精度...

float精确到几位小数?
对于float32(单精度)来说,表示尾数的为23位,除去全部为0的情况以外,最小为2-23,约等于1.19*10-7,所以float小数部分只能精确到后面6位,加上小数点前的一位,即有效数字为7位。同理float64(单精度)的尾数部分为52位,最小为2-52,约为2.22*10-16,所以精确到小数点后15位,加上...

float精度问题求解
从第一位非0的数字开始,后面的全部叫有效数字 例如 100:3个有效数字 1.0001:5个有效数字 0.001:1个有效数字 0.0010:2个有效数字 10x10^3:2个有效数字,1和0,后面的10^3不算 float里有23个有效数字,但是这23个有效数字是二进制的不是十进制的。换算成10进制以后就差不多是6~7个...

float的有效位数是六位,指的是小数点之后的六位还是包括小数点前的数...
我们把通过直读获得的准确数字叫做可靠数字;把通过估读得到的那部分数字叫做存疑数字。把测量结果中能够反映被测量大小的带有一位存疑数字的全部数字叫有效数字。数据记录时,我们记录的数据和实验结果真值一致的数据位便是有效数字。526345保留三位有效数字即为526000,保留两位有效数字即为530000,对于小数来...

相似回答