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

DBL_DIG宏


概要:

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


描述:

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

DBL_DIG表示与double类型对应的十进制位数,q

任何q个十进制位浮点数都可以舍入为基数为b、位数为p的浮点数;再次舍入回原浮点形式,q个十进制位保持不变。

{ p log 10 b  如果 b 10 的幂         ( p - 1 ) log 10 b  除此以外

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


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

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

int main(void)
{
    printf("DBL_MANT_DIG(p) = %d\n", DBL_MANT_DIG);
    printf("FLT_RADIX(b) = %d\n", FLT_RADIX);
    printf("DBL_DIG(q) = %d\n", DBL_DIG);

    if(FLT_RADIX == 10)
      printf("DBL_DIG(q) = %d\n", (int)(DBL_MANT_DIG*log10(FLT_RADIX)));
    else
      printf("DBL_DIG(q) = %d\n", (int)floor((DBL_MANT_DIG - 1)*log10(FLT_RADIX)));
      
    return 0;
}


输出:

DBL_MANT_DIG(p) = 53

FLT_RADIX(b) = 2

DBL_DIG(q) = 15

DBL_DIG(q) = 15


相关内容:
FLT_DIG 表示与float类型对应的十进制位数的宏。
LDBL_DIG 表示与long double类型对应的十进制位数的宏。