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

LDBL_DECIMAL_DIG宏


概要:

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


描述:

浮点类型不能准确表示其值域范围内的所有值,ISO/IEC 9899:2018标准对其精度提出了要求。

LDBL_DECIMAL_DIG表示long double类型对应的十进制位数,n

任何基数为b、位数为p的浮点数都可以舍入为n个十进制位的浮点数;再次舍入回原浮点形式,值不会发生改变。

{ p log 10 b  如果 b 10 的幂         1 + p log 10 b  除此以外

LDBL_DECIMAL_DIG应不小于10,具体值由实现定义。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
/*宏LDBL_DECIMAL_DIG范例*/

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

int main(void)
{
    printf("LDBL_MANT_DIG(p) = %d\n", LDBL_MANT_DIG);
    printf("FLT_RADIX(b) = %d\n", FLT_RADIX);
    printf("LDBL_DECIMAL_DIG(n) = %d\n", LDBL_DECIMAL_DIG);

    if(FLT_RADIX == 10)
      printf("LDBL_DECIMAL_DIG(n) = %d\n", (int)(LDBL_MANT_DIG*log10l(FLT_RADIX)));
    else
      printf("LDBL_DECIMAL_DIG(n) = %d\n", (int)ceill(1+LDBL_MANT_DIG*log10l(FLT_RADIX)));

    return 0;
}


输出:

LDBL_MANT_DIG(p) = 64

FLT_RADIX(b) = 2

LDBL_DECIMAL_DIG(n) = 21

LDBL_DECIMAL_DIG(n) = 21


相关内容:
FLT_DECIMAL_DIG 表示float类型对应的十进制位数的宏。
DBL_DECIMAL_DIG 表示double类型对应的十进制位数的宏。