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语言逻辑运...