C++中 double、 long double表示的数据范围一样那他们有什么区别
7个回答
展开全部
double、 long double的区别在于:
在很多编译器中,double的精度不如long double。在VC6.0中double和long double一样都是分配8个字节,15位有效数字;但是在GCC中long double分配12个字节,精确度自然就比double高出四个数量级。
double,即double float数据类型,是双精度浮点型的数据。计算机中表示实型变量的一种变量类型。此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,;双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。
在很多编译器中,double的精度不如long double。在VC6.0中double和long double一样都是分配8个字节,15位有效数字;但是在GCC中long double分配12个字节,精确度自然就比double高出四个数量级。
double,即double float数据类型,是双精度浮点型的数据。计算机中表示实型变量的一种变量类型。此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,;双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。
展开全部
其实在VC6.0中double和long double一样都是分配8个字节,15位有效数字;但是在GCC中long double分配12个字节。初学者基本上用不到long double。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个跟编译器相关, VC6里不用考虑它们的区别,所以一般不用细想这个。 liuyan12600 回答的比较详细。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有效数字的范围long double的要比double的多 在C中 long double 的是18-19个 double 是15-16个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
据我所知,double和long double都是ANSI C标准的浮点数。但ANSI C并未规定long double的确切精度。所以对于不同平台可能有不同的实现。有的是8字节,有的是10字节,有的是12字节或更多。一般来说long double的精度要高于double, 至少相等,就像int和long int一样。但同一平台也可能不一样,比如MS自己的C/C++/VC++就不一样。好像以前16位的VC++中long double用10字节,而Win32就改用了8字节,和double一样了。MS保留long double类型的库函数是为了兼容,用户能够继续使用以前编写的代码。MS也说明以后编写程序时不要再使用asinl, acosl这样的long double类型的库函数。但long double的数据类型还是要保留的,它毕竟是ANSI C标准规定的数据类型。说不定哪天他的C/C++会把long double弄成16字节的呢。
参考资料: http://zhidao.baidu.com/question/46482588.html
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询