c语言中FLT_DIG和DBL_DIG是什么意思
算里存放浮点型数据,并不能精确表示。
这两个宏在头文件下面,用来说明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