C语言的float和double的问题。

#include<stdio.h>
main()
{
double x;
x=2222222222.222226666;
printf("x=%f\n",x);
}
x=2222222222.222227
Press any key to continue

#include<stdio.h>
main()
{
float x;
x=22222.678;
printf("x=%f\n",x);
}
x=22222.677734
Press any key to continue

问①,在我这台电脑用这个软件的只“针对”上述这个程序,这个结果,即“此刻”float 和 double 的有效数分别是多少呢?(注意:不要多想。就“只针对”此刻。即上述我给出的那个程序的那个结果的“此刻”)
②,书中说 float 的有效数是 6~7位
Double 的有效数是 15~16位。 究竟是多少位和电脑有关还是和软件有关?

介绍一下浮点数在C中的存储:浮点数由符号位、指数部分、尾数部分组成。IEEE规定float有32位 double有64位。一般来说软件都是执行这个标准的,一般机器也都是支持这个标准的,所以一般不需要考虑机器与软件差异的问题。这两种类型的有效位数不同主要是由尾数部分的位数不同导致的:double的尾数部分长度更大,因此能表示的二进制小数就多,对应到10进制小数时精度也更大;float的尾数部分长度更小,因此能表示的二进制小数就少,对应到10进制小数时精度也就差些。
对于输出问题,C中规定double和float输出都用%f。
1 “有效数”我不知道楼主怎么定义,但是我能说的是,内容中的相应的数的表示方法已经确定了,程序打印出来的数就是内存中二进制小数的准确10进制翻译。
2 这个问题在上面已经回答了
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-17
两个都用printf("x=%f\n",x);打印 %f是按浮点型输出,精度就只有6位

c语言float和double的区别
c语言float和double的区别如下:1、精度不一样,float是单精度,double是双精度;2、表示小数的范围不一样,double能表示的范围比float大;3、double在内存中,占8个字节,float在内存中,占4个字节。%f默认保留6位小数,不足位以0补齐,超过六位按四舍五入的方法保留6位,若想输出指定位数,在格式化...

c语言中float与double有什么区别?
在C语言中,float与double是两种用于存储浮点数的类型。它们之间最主要的差异在于内存占用量以及能够表示的数值精度。float类型使用4字节的内存来存储数据,而double类型则需要8字节。这使得double类型能够表示更高精度和更宽范围的数值。实际上,double类型的精度大约是float类型的两倍。举个例子,对于数值1.9...

C语言中float和double的问题。
float 有效数字6-7位,double 有效数字14-16位,同编译器有关。标准的C规定 float 用 32 位2进制,double 用 64 位2进制。用格式: printf("x=%.10f\\n",x); 可以输出小数10位。(1) x=2222222222.22222 -- 15 位精度,第16位起含舍入误差,(2) x=22222.67 -- 7位精度, ...

C语言float 和double的问题
计算时,float与double 内部都转换成统一的标准双精度格式计算,再返回你对应类型的值;保存到存储器时,float短,节省空间。

c语言中double和float的区别
在C语言中,double和float两种数据类型的主要区别在于精度和内存占用。它们都是浮点数类型,用于表示小数,但浮点数的精度以及取值范围有所区别。double的精度更高,通常拥有16位的有效数字,而float的精度相对较低,只有7位。这导致double的取值范围比float大,因此double占用的内存空间更多,一般为8字节,...

C语言:float型与double型的转换问题
float精度不高,保存小数的位没double多。假如float用8位保存小数点后的数据,精度是2的负8次方,也就是1\/256 的精度,而double比float多,比如说是16位,就是1\/65536 的精度。需要明白的是,浮点数表示的数是有限的,不可能表示所有的实数,由于精度的原因,会有偏差。你可以换成double型,显示的...

c语言中double和float的区别
C语言中double和float的区别:1. 精度不同 float: 浮点数类型,单精度浮点数,遵循IEEE 754标准。通常占用4个字节内存空间。其数值范围较小,可以表示大约±1E±38范围内的正数或负数。由于位数较少,精度相对较低。double: 双精度浮点数类型。同样遵循IEEE 754标准。通常占用8个字节内存空间。它可以...

C语言的float和double的问题。
IEEE规定float有32位 double有64位。一般来说软件都是执行这个标准的,一般机器也都是支持这个标准的,所以一般不需要考虑机器与软件差异的问题。这两种类型的有效位数不同主要是由尾数部分的位数不同导致的:double的尾数部分长度更大,因此能表示的二进制小数就多,对应到10进制小数时精度也更大;float的...

c语言问题 double float等有什么区别?
对于32位电脑:单精度浮点数在机内占4个字节,用32位二进制描述。双精度浮点数在机内占8个字节,用64位二进制描述。double 和 float 的区别是double精度高,但double消耗内存是float的两倍,double的运算速度比float慢得多

C语言关于double和float的问题
当然。双精度浮点数 double 占用8个字节 单精度浮点数 float 占用4个字节 double能表示更大的数,精度更高。一般都用double,省事。

相似回答