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

FLT_DECIMAL_DIG宏


概要:

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


描述:

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

FLT_DECIMAL_DIG表示float类型对应的十进制位数,n

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

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

FLT_DECIMAL_DIG应不小于6,具体值由实现定义。


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

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

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

    if(FLT_RADIX == 10)
      printf("FLT_DECIMAL_DIG(n) = %d\n", (int)(FLT_MANT_DIG*log10f(FLT_RADIX)));
    else
      printf("FLT_DECIMAL_DIG(n) = %d\n", (int)ceilf(1+FLT_MANT_DIG*log10f(FLT_RADIX)));
      
    return 0;
}


输出:

FLT_MANT_DIG(p) = 24

FLT_RADIX(b) = 2

FLT_DECIMAL_DIG(n) = 9

FLT_DECIMAL_DIG(n) = 9


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