我正在编写依赖于 C(特别是 c11)四舍五入到偶数的中间关系的代码。当使用带有舍入模式的 rint 作为 FE_TONEAREST 时,我没有在 C 标准中找到说明如何使用 FE_NEAREST 处理关系的保证。ISO C 标准第 509 页指出
<fenv.h> 中的 fegetround 和 fesetround 函数提供了在 <fenv.h> 中的舍入方向宏(FE_TONEAREST、FE_UPWARD、FE_DOWNWARD、FE_TOWARDZERO)和值 0、1 表示的 IEC 60559 定向舍入模式之间进行选择的工具FLT_ROUNDS 的 、 、 2 和 3 是 IEC 60559 定向舍入模式。
但是,我在 IEC 60559 标准中找不到有关舍入模式的任何文档。在我的测试机器上,行为是在 FE_TONEAREST 中,关系四舍五入为偶数,我想确保这是由 c11 标准强制执行的,而不是实现定义的。