赞
踩
算里存放浮点型数据,并不能精确表示。
这两个宏在float.h头文件下面,用来说明double、float两种数据类型有效数字的位数,注意不是小数点后面的有效位数,而是所有位数。
#define DBL_DIG 15 /* # of decimal digits of precision */
#define FLT_DIG 6 /* # of decimal digits of precision */
float能保证的有效位数最多是6~7位,完全能保证的是6位,double是15~16位,完全能保证的是15位。
float.h
#ifndef FLT_DIG
#define FLT_DIG 6
#endif
#ifndef DBL_DIG
#define DBL_DIG 15
#endif
#ifndef DBL_MAX
#define DBL_MAX 1.7976931348623158e+308 /* max decimal value of a double */
#endif
#ifndef DBL_MIN
#define DBL_MIN 2.2250738585072014e-308
#endif
#ifdef __LONGDOUBLE128
/* POWER 128 bit long double */
#define LDBL_MANT_DIG 106
#define LDBL_EPSILON 0.24651903288156618919116517665087070E-31L
#define LDBL_DIG 31
#define LDBL_MIN_EXP DBL_MIN_EXP
#define LDBL_MIN ((long double) DBL_MIN)
#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
#define LDBL_MAX_EXP DBL_MAX_EXP
#define LDBL_MAX 0.1797693134862315807937289714053023E+309L
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
#elif defined(__LONGDOUBLE80)
/* IA64 80 bit long double */
#define LDBL_MANT_DIG 64
#define LDBL_EPSILON 1.0842021724855044340075E-19L
#define LDBL_DIG 18
#define LDBL_MIN_EXP (-16381)
#define LDBL_MIN 3.36210314311209350626e-4932L
#define LDBL_MIN_10_EXP (-4931)
#define LDBL_MAX_EXP 16384
#define LDBL_MAX 1.18973149535723176502e+4932L
#define LDBL_MAX_10_EXP 4932
#else
/* default 64 bit long double */
#define LDBL_MANT_DIG DBL_MANT_DIG
#define LDBL_EPSILON DBL_EPSILON
#define LDBL_DIG DBL_DIG
#define LDBL_EPSILON DBL_EPSILON
#define LDBL_DIG DBL_DIG
#define LDBL_MIN_EXP DBL_MIN_EXP
#define LDBL_MIN DBL_MIN
#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
#define LDBL_MAX_EXP DBL_MAX_EXP
#define LDBL_MAX DBL_MAX
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
#endif /* __LONGDOUBLE128 */
#ifdef _ISOC99_SOURCE
#define DECIMAL_DIG 37
#endif
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。