浮点环境
来自cppreference.com
浮点环境是浮点状态标志及实现所支持的控制模式的集合。它是线程局域的,每个线程从亲线程继承其浮点环境的初始状态。浮点运算会修改指示反常值或补助信息的浮点状态标志。浮点控制模式影响浮点运算的结果。
仅当设置
#pragma STDC FENV_ACCESS 为 ON
时,浮点环境的访问及修改才有意义。否则具体实现可以自由地假设浮点控制模式始终是默认值,而且浮点状态标志始终不被检测或修改。实际上,当前只有少数编译器,如 HP aCC、 Oracle Studio 和 IBM XL 明确支持此 #pragma
,但总之多数编译器允许有意义地访问浮点环境。
类型
在标头
<fenv.h> 定义 | |
fenv_t | 表示整体浮点环境的类型 |
fexcept_t | 集中表示所有浮点异常状态标志的类型 |
函数
(C99) |
清除指定的浮点异常状态标志 (函数) |
(C99) |
确认设置了哪些浮点异常状态标志 (函数) |
(C99) |
引发指定的浮点异常 (函数) |
(C99)(C99) |
将指定的浮点异常状态标志从指定的浮点环境获取,再设置到指定浮点环境的操作。 (函数) |
(C99)(C99) |
获得或设置数字的舍入方向 (函数) |
(C99)(C99) |
保存或恢复当前浮点环境,包括异常的标志和数字的舍弃模式 (函数) |
(C99) |
保存当前环境的异常状态标志,再清除所有异常状态标志,并忽略所有未来错误 (函数) |
(C99) |
恢复之前保存的浮点环境,并引发之前已经引发过的异常,使其存在于当前内存环境中 (函数) |
宏
浮点异常 (宏常量) | |
浮点舍入方向 (宏常量) | |
(C99) |
默认浮点环境 (宏常量) |
引用
- C17 标准(ISO/IEC 9899:2018):
- 7.6 Floating-point environment <fenv.h> (第 150-156 页)
- 7.31.4 Floating-point environment <fenv.h> (第 332 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.6 Floating-point environment <fenv.h> (第 206-215 页)
- 7.31.4 Floating-point environment <fenv.h> (第 455 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.6 Floating-point environment <fenv.h> (第 187-196 页)