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函数。)
相关内容:
主要参考资料:
1、ISO/IEC 9899:2024
2、IEEE 754:2019