c语言中的单精度数据的有效位数是什么意思

2021-03-13 18:52:42 字数 3403 阅读 5198

1楼:百度网友

c语言中的单精度浮点数的实际有效精度为24位二进制,这相当于 24*log102≈7.2 位10进制的精度。尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。

因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。

2楼:物理公司的

在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位

3楼:御含灵

比如pi=3.1415926

但是计算机里面单精度可能只能表示成

3.14159242

那么有效位数就是小数点后6位

4楼:匿名用户

就是有效存储范围,超过存储范围会不准确或者错误

5楼:匿名用户

例如#include

void main()

输出结果 7654321152.000000,7654321152.000000

在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位

6楼:清泉天涯行

是这样的,单精度数据是有个大小取值范围的,在这个范围就有效,如果数据过大就溢出

在c语言中关于float型有一处不明:就是单精度的有效位数是7位,为什么在下面的例子中这8位都是准确的呢?

7楼:匿名用户

它是说保证7位准确,并不是说第8位就肯定不准确。

8楼:百度网友

type exponent length mantissa length

float 8 bits 23 bits

浮点数的有效位:23bits,合24位

其分辨率为:1/(2^24)=0.000,000,059,604644775390625

=0.000,000,06

即浮点数可表示的最小数的单位为0.000000059604644775390625;

其他的数都由0.000000059604644775390625 * 2^x来表示的,

12345678920

12345678900

000000059604644775390625

=12345678848

12345678848=0.000000059604644775390625 * 2^x

具体计算略,原理如此

9楼:匿名用户

因为计算机保存浮点数时,是把数看作a*2^b这样的形式,不是以10为底数,而是以2为底数。即将数转换成以2为底的“科学计数法”的形式,再由这个形式反转换成10进制形式,但数据又有位数限制,所以有些数转换成二进制计数法形式后位数超出了限制的位数,那么转换回来时得到的数就会与原数有偏差,不同的数这个偏差是不同的,有可能在小数点后第7位,也有可能在第8位,也有可能在其他位数,但能保证第6位之前是正确的。

c语言中,单精度型数据有效数字约是6~7位,数值范围是约-3.4e-38——3.4e+38,怎么得出来的???求解

10楼:重小楼

这个比较复杂,建议你找一下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位

其实这些东西网上都能搜到,遇到不懂的,多在网上找下,希望能帮到你

11楼:匿名用户

这个是因为浮点数的表示格式有关,你可以参考ieee的关于浮点数的格式的标准,里面有详细的叙述。不过很难理解。《writer great code》(第1卷)的第4章也讲了关于浮点数的问题,比较好理解。

c语言c中间加数字是什么意思,C语言%c中间加数字是什么意思

1楼 灰灰不吃羊 限制输出宽度, 2c,就是输出的宽度为2, c省略了1,c的输出格式控制会有详细的介绍。 c语言里 f中间加数字是什么意思 2楼 匿名用户 f是用于格式化输入输出函数,对应类型为float的格式字符。加数字的情况仅适用于输出函数,比如printf。 其形式为 printf a bf...

c从元数据是什么意思,C#中的[从元数据]是什么意思?

1楼 可乐零七 就是 里描述数据的数据,比如最常见的就是把鼠标放到系统定义的类型里然后按f12就会打开它的原型,但是不能去修改这些数据。那么这些数据就称为元数据。 c 中的 从元数据 是什么意思 2楼 匿名用户 楼上说的不正确 所谓元数据 其实是指由微软所封装的类 这些类你可以查看 但是无法修改 例...

c语言中可以进行位运算的数据类型有什么

1楼 匿名用户 float 和double不可以 剩下的几个都行 2楼 李 只能用于整型操作数,即char short int long类型 c语言位运算有什么作用 3楼 逍遙侠 可以用位运算做文件加密,比如一个文档,让其中的内容位运算,再打开就会显示一堆乱码,除非按特定的位运算变回来 c语言逻辑运...