读书人

double、float或许long double的最小长

发布时间: 2013-07-16 22:38:05 作者: rapoo

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++,不是某个编译器。
嗯,下次记得别搭理他就行了

读书人网 >C++

热点推荐