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

DECIMAL_DIG宏


概要:

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


描述:

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

DECIMAL_DIG表示实现支持的最宽浮点类型对应的十进制位数,n

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

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

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


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

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

int main(void)
{
    printf("DECIMAL_DIG = %d\n",DECIMAL_DIG);
    printf("DBL_DECIMAL_DIG = %d\n",DBL_DECIMAL_DIG);
    printf("LDBL_DECIMAL_DIG = %d\n",LDBL_DECIMAL_DIG);

    return 0;
}


输出:

DECIMAL_DIG = 21

DBL_DECIMAL_DIG = 17

LDBL_DECIMAL_DIG = 21

实现支持的最宽浮点类型可能是double类型(例如:Visual Studio 2017),也可能是long double类型(例如:GCC),这取决于具体实现。


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