请问:C语言中关于浮点型数据的问题???

请教各位高手:
谭浩强教材中说float型数据为6~7位有效数值,例:float a=111111.121131;输出为111111.125000;?若float a=11111.121131;输出为111111.121094;
float a=0.123456789;输出为:0.123457;
float a=123.123456789;输出为:123.12459
why???
然后它说其数值范围为-3.4*10E-38~3.4*10E38,是什么意思??
-3.1*10-38是什么意思,难道是-0.0000....34??那-100.123怎么表示???

第1个回答  2010-12-28
实行变量是用有限的存储单元存储的,因此提供的有效数字也是有限的,因此其输出的数字过长将会出现你说描述的结果,其前8位是准确的,后面是随机的数字了。
因存储单元空间有限,不同变量有不同存储单元,其范围也不相同,实型变量范围就是-3.4*10E-38~3.4*10E38。在范围之外就不是实型变量了。谭浩强的书不错可多读几遍。
第2个回答  2010-12-28
简单地说,在计算机内部,浮点数由阶符阶码数符数码组成,比如111111.121131规格化以后是1.11111121131*10^5阶码是5数码是1.11111121131,由于计算机给数据分配的空间是有限的,数码存不下1.11111121131这么多位数,只能确保前7位是正确的,后面的是任意的字符。
同样,阶码能存储的位数也是有限的,所以浮点数能表示的数字也是有限的,介于-3.4*10^-38~3.4*10^38.
更多的内容请楼主看计算机组成原理的浮点表示的相关内容。本回答被网友采纳

请教C语言浮点数输出问题。
使用的数字之间类型不匹配(例如,混合使用浮点型和双精度型)。 为解决此行为,大多数程序员或是确保值比需要的大或者小,或是获取并使用可以维护精度的二进制编码的十进制 (BCD) 库。 现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1、小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1) 十进制整...

C语言浮点型数据问题
a为浮点数,就应该按%f来输出.就是说printf("%f,%f", a, b);或者printf( "%f", a );你看到的printf("%d",a)还输出12345678848.00000是看错了.而你看到printf("%d,%f",a,b)结果不正确是因为,float的精度丢失引起的.

C语言浮点型数的问题
根本原因是大多数十进制的小数无法转换成精确的二进制小数,举个例子:二进制的0.1等于十进制的0.5 但是十进制的0.1是无法转换成一个有限的二进制小数的,结果是一个无线循环的二进制小数:1(2)\/1010(2)=0.0001100110011001100...(2)浮点变量对于任何数都是化成小数来表示的,比如9表示为:1.001*10...

C语言学习,浮点型数据的问题
如果涉及浮点数,值可能不往返。值的往返是指,某个运算将原始浮点数转换为另一种格式,而反向运算又将转换后的格式转换回浮点数,且最终浮点数与原始浮点数相等。由于一个或多个最低有效位可能在转换中丢失或更改,往返可能会失败。关于双精度型:目前大多数高级语言(包括C)都按照IEEE-754标准来规定...

c语言中 浮点型的问题
C语言中是没有八进制和十六进制浮点数。主要原因是,浮点数的表示是很复杂的。。所以开发人员舍弃了这种做法。JAVA中又十六进制的浮点数数据类型。

c语言float型数据范围(在C语言中float数据数值范围是多少)
C语言中,float为单精度浮点数,占4字节,其数值范围为3.4E-38~3.4E+38或者-(3.4E-38~3.4E+38)float的指数位有8位,尾数位有23位,符号位1位。于是,float的指数范围为-127~+128,按补码的形式来划分。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达...

c语言中浮点型常量问题?
3.14默认是在double形式存在的,这是规定,就像法律一样,只能死记,没有道理而言。r是float型,转换为double型会有丢失数据的可能,但是编译器并不能完全确定,到底会不会丢失数据,因此,出名对你的安全,编译器会给你一个警告,当然3.14这样的数肯定不会丢失,可以不用理会他这条警告。当不同类型...

c语言关于浮点型数据范围的问题
可以这样理解:浮点数由有效数及指数两部分组成,你提到的两个值,应该说一个是一个是最大数,一个是最小精度值。其实如果是从值的范围来说,这个编译环境下面,最小的负数应该是可以表示到-3.402823466 E+38,在-3.402823466 E+38到+3.402823466 E+38之间的数,都是可以表示的。(但不一定是...

浮点型数据C语言中的浮点数与实数相互转换
在C语言中,浮点型数据的存储和转换遵循IEEE754标准。这种标准使用科学计数法表示浮点数,包括符号、指数和尾数。单精度浮点数由1位符号、8位指数和23位尾数组成,总共4字节。其中,指数域的偏移量为127,使得实际可表示的指数范围是-127至128。对于尾数,由于小数点左侧通常为1,只需存储22位有效数字。

c语言中关于float类型的问题
记不太清楚啦。好像意思是说浮点可以精确7个有效数字。而且小位数默认为6位小数。你整数部分肯定不会出错的。但是只有7个有效数字。所以后面的其他小数点会出错。各个电脑出错的值会有点不太相同。

相似回答