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

FE_DFL_MODE宏


概要:
#include <fenv.h>
#define FE_DFL_MODE pointer  //pointer为指向const femode_t类型对象的指针。

描述:

该宏表示实现支持的动态浮点控制模式集的默认状态,其类型为指向const femode_t类型对象的指针。

具体实现中还可能定义一些以FE_和一个大写字母开头的表示动态模式集其它实现定义状态的宏,其类型同样为指向const femode_t类型对象的指针。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
/*宏FE_DFL_MODE范例*/

#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

#pragma STDC FENV_ACCESS ON

void specifiedModeValue(double value, const femode_t * ptr)
{
    femode_t originalMode;  //保存浮点控制模式的变量。

    //保存当前浮点控制模式。
    if(fegetmode(&originalMode))
    {
        exit(EXIT_FAILURE);
    }

    //修改浮点控制模式。
    fesetmode(ptr);

    //输出当前舍入模式下第一个实参的值。
    printf("nearbyint(%.2f) = %f\n", value, nearbyint(value));

    //恢复原先浮点控制模式。
    fesetmode(&originalMode);
}

int main(void)
{
    specifiedModeValue(2.55, FE_DFL_MODE);

    return 0;
}


可能输出:

nearbyint(2.55) = 3.000000

(注:编译时实现还未支持宏FE_DFL_MODE、femode_t类型、fegetmode函数以及fesetmode函数。)


相关内容:
FE_DFL_ENV 表示默认动态浮点环境的宏。


主要参考资料:

1、ISO/IEC 9899:2024

2、IEEE 754:2019