当前位置: C语言 -- 标准库 -- <float.h> -- LDBL_MAX

LDBL_MAX宏


概要:

#define LDBL_MAX value //value值由实现定义。


描述:

该宏表示long double类型可表示的最大有限浮点数, ( 1 - b - p ) b e max

LDBL_MAX应不小于1E+37,具体值由实现定义。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
/*宏LDBL_MAX范例*/

#include <float.h>
#include <math.h>
#include <stdio.h>

int main(void)
{
    printf("LDBL_MAX = %LE\n",LDBL_MAX);
    printf("LDBL_MAX = %LE\n", \
    	(1 - powl(FLT_RADIX,-LDBL_MANT_DIG))*powl(FLT_RADIX,LDBL_MAX_EXP-1)*FLT_RADIX);

    return 0;
}


输出:

LDBL_MAX = 1.189731E+4932

LDBL_MAX = 1.189731E+4932

数学上LDBL_MAX等于 ( 1 - b - p ) b e max ,但C语言中 b e max 不是规格化浮点数;如果使用表达式(1 - powl(FLT_RADIX,-LDBL_MANT_DIG))*powl(FLT_RADIX,LDBL_MAX_EXP)将不能得到正确的LDBL_MAX值; b e max - 1 是规格化浮点数,使用表达式(1 - powl(FLT_RADIX,-LDBL_MANT_DIG))*powl(FLT_RADIX,LDBL_MAX_EXP-1)*FLT_RADIX能够得到正确的LDBL_MAX值。


相关内容:
FLT_MAX 表示float类型可表示的最大有限浮点数的宏。
DBL_MAX 表示double类型可表示的最大有限浮点数的宏。