c++中单精度与双精度的区别

# include <stdio.h>

int main(void)
{
double i, j, k,d;

printf ("请输入三个数字:\n");
scanf ("%lf %lf %lf", &i, &j, &k);
if (i >= j)
d = i;
else
d = j;
if (d >= k )
printf ("d = %lf\n", d);
else
{
d = k;
printf ("d = %lf\n", d);
}

return 0;
我输入2.666,2.777,2.888三个数,输出结果为2.666000,小数点后六位,
而我用float,输出的也是这个结果,但输入的数字都只能为小数点后六位,
请问这是怎么回事,double与float输出的结果怎么会是一样的,怎么区别二者

Float内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),VC++6.0平台中默认显示是6位有效数字;double占8个字节,有效数位是16位,但在VC++6.0平台中默认显示同样是6位有效数字。所以两者在实际显示效果是一样的。还有,我按你那三个数字分别用double和float试验过,输出结果都跟预期的2.888一样啊,怎么可能是最小的呢?追问

弄错了,是2.888000
可一个字节不是等于8位吗

追答

这里说的“位”是数字个数,而不是 1字节(Byte) = 8位(bit) 中的“位(bit)”。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-02
类型 数值范围
float 32 6-7 -3.4*10(-38)~3.4*10(38)
double 64 15-16 -1.7*10(-308)~1.7*10(308)

简单来说,
float 为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位)

double 为双精度,占8个字节,有效数位是16位,

C语言中的单精度和双精度浮点型的区别!3.14是哪种?3.14159呢?_百度知 ...
一、指代不同 1、单精度:是指计算机表达实数近似值的一种方式。2、双精度:此数据类型与单精度数据类型(float)相似,但精确度比float高。二、占用空间不同 1、单精度:范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38 。2、双精度:...

c++中,float double区别
区别:一、精度的区别 float为单精度,内存中占4个字节,有效数位是7位。double为双精度,占8个字节,有效数位是16位。二、指数和尾数长度的区别 float指数长度为8位,尾数长度23位。double指数长度为11位,尾数长度52位。三、取值范围的区别 float的取值范围为3.4E-38~3.4E+38。double的取值范围...

C语言中单精度,双精度,长双精度分别是什么意思
单精度浮点(float):4个字节长 双精度浮点(dloube):8个字节长,长双精度(long double):10个字节长。根据你C\/C++程序的需要,可以定义浮点变量,精度高,占的字节也多。

C++里面的单精确度值和双精确度值是什么?求简单易懂的解释,专业的回答...
float 单精度 7位有效数字 占32bit 内存 double 双精度 16位有效数字 占64bit 内存 如果你要把一个数字比如 25.23456754放入一个变量,那就选双精度,计算机对小数的直接处理能力有限。

c++中单双精度再编程中怎样确定?简单通俗的来。
简单来说,单精度(single precision)浮点数精度比双精度(double precision)浮点数范围小,精度低,前者十进制有效数字7~8位,后者十进制有效数字14~15位。一般是指IEC-559\/IEEE-754标准定义的二进制浮点数。1L和2L错误,C++中有三种浮点数float、double和long double,精度(包括范围)float<=double<=...

c++中,float double区别
float和double都是C++中的浮点型数据类型,三者的区别是:1、精度是不同的。浮点类型是单精度浮点数,双类型是双精度浮点数。2、分配存储空间。c++编译器为浮点类型分配4字节,为双类型分配8字节。3、有效位的个数是不同的。Float可以提供6位有效数字,double可以提供15位有效数字。

c++中单精度浮点跟双精度浮点怎么区分
当表中需要存储精度较高、位数固定的数值或者存储真正的浮点数值时请使用双精度型数据代替数值型数据 单精度浮点型是为了提供兼容性,浮点数据类型在功能上等价于数值型。 追问: 套用这题,如果double改成float行不行 回答: float是16位,double32位,没超过16位就可以用float ...

单精度与双精度的区别
单精度与双精度的区别:1、单精度,也就是 float ,在 32 位机器上用 4 个字节来存储的;而双精度double是用 8 个字节来存储的。2,单精度和双精度在计算机中的表示格式虽一样,但由于位数存储位不同,他们能表示的数值的范围就不同,也就是能准确表示的数的位数就不同。

Visual C++ 实型常量中单精度,双精度和长双精度的区别是什么
也就意味着取值范围比较大。通俗来讲,就是一个最大只能取到10,而另外一个可以取到100的差别。比如单精度的绝对值范围是3.4*10^-38~3.4*10^38,而双精度就有1.7*10^-308~1.7*10^308。但是这个取值范围还和使用的编译器有关,不同的编译器对相同类型的数据可能分配的内存大小不同 ...

c++中单精度与双精度的区别
Float内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),VC++6.0平台中默认显示是6位有效数字;double占8个字节,有效数位是16位,但在VC++6.0平台中默认显示同样是6位有效数字。所以两者在实际显示效果是一样的。还有,我按你那三个数字分别用double和float试验过,输出结果都跟预期...

相似回答