首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

double、float或许long double的最小长度有规定么

2013-07-16 
double、float或者long double的最小长度有规定么?书上说char、short、long的最小长度都是有规定的,但是没有

double、float或者long double的最小长度有规定么?
书上说char、short、long的最小长度都是有规定的,但是没有说浮点数的,是忘了写还是没有规定?
[解决办法]
依据平台而不一
[解决办法]
float 32位 double 64位。对应IEEE标准的单精度和双精度浮点数。

long double按标准规定是80位,对应IEEE标准的扩展精度浮点数,但是不是所有编译器都符合标准。比如VC上long double就是double。有些编译器long double甚至是128位的。
[解决办法]

引用
The C floating types match the IEC 60559 formats as follows:
— The float type matches the IEC 60559 single format.
— The double type matches the IEC 60559 double format.
— The long double type matches an IEC 60559 extended format,307) else a
non-IEC 60559 extended format, else the IEC 60559 double format.
Any non-IEC 60559 extended format used for the long double type shall have more
precision than IEC 60559 double and at least the range of IEC 60559 double.308)

引用自c99标准附录F
[解决办法]
引用:
float 32位 double 64位。对应IEEE标准的单精度和双精度浮点数。

long double按标准规定是80位,对应IEEE标准的扩展精度浮点数,但是不是所有编译器都符合标准。比如VC上long double就是double。有些编译器long double甚至是128位的。
标准推荐使用80位的,但最低不能低于double,跟double一样是允许的
[解决办法]
3.4*10^(-38)~3.4*10^(38). 

这是面向IA-32处理器的
[解决办法]
IEEE 754
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

请帖主亲自打开include\float.h文件,然后看其具体内容。

你的意思是让我把所有的实现的这个文件都看一遍么?


既然你懒得看或者害怕看:
float.h
...
#define DBL_DIG         15                      /* # of decimal digits of precision */
#define DBL_EPSILON     2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
#define DBL_MANT_DIG    53                      /* # of bits in mantissa */
#define DBL_MAX         1.7976931348623158e+308 /* max value */
#define DBL_MAX_10_EXP  308                     /* max decimal exponent */
#define DBL_MAX_EXP     1024                    /* max binary exponent */
#define DBL_MIN         2.2250738585072014e-308 /* min positive value */
#define DBL_MIN_10_EXP  (-307)                  /* min decimal exponent */
#define DBL_MIN_EXP     (-1021)                 /* min binary exponent */
#define _DBL_RADIX      2                       /* exponent radix */
#define _DBL_ROUNDS     1                       /* addition rounding: near */

#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */


#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */
#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */

#define LDBL_DIG        DBL_DIG                 /* # of decimal digits of precision */
#define LDBL_EPSILON    DBL_EPSILON             /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
#define LDBL_MANT_DIG   DBL_MANT_DIG            /* # of bits in mantissa */
#define LDBL_MAX        DBL_MAX                 /* max value */
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP          /* max decimal exponent */
#define LDBL_MAX_EXP    DBL_MAX_EXP             /* max binary exponent */
#define LDBL_MIN        DBL_MIN                 /* min positive value */


#define LDBL_MIN_10_EXP DBL_MIN_10_EXP          /* min decimal exponent */
#define LDBL_MIN_EXP    DBL_MIN_EXP             /* min binary exponent */
#define _LDBL_RADIX     DBL_RADIX               /* exponent radix */
#define _LDBL_ROUNDS    DBL_ROUNDS              /* addition rounding: near */
...



一个特定编译器的头文件有JB用?我说的是C++,不是某个编译器。
嗯,下次记得别搭理他就行了

热点排行