C 参考手册
- C 语言
- C 关键词
- 预处理器
- C 标准库头文件
- 类型支持
- 程序支持工具
- 变参数函数
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 算法
- 数值
- 常用数学函数
- 浮点环境
- FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD
- feclearexcept
- fetestexcept
- feraiseexcept
- fegetexceptflag, fesetexceptflag
- fegetround, fesetround
- fegetenv, fesetenv
- feholdexcept
- feupdateenv
- FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW, FE_UNDERFLOW, FE_ALL_EXCEPT
- FE_DFL_ENV
- 伪随机数生成
- 复数算术
- 泛型数学
- 文件输入/输出
- 本地化支持
- 原子操作库
- 线程支持库
- 实验性 C 标准库
- 有用的资源
- 符号索引
- 注释
fegetround, fesetround
定义于头文件 <fenv.h>
|
||
int fesetround( int round ); |
(1) | (C99 起) |
int fegetround(void); |
(2) | (C99 起) |
2) 返回对应当前舍入方向的浮点舍入宏。
参数
round | - | 舍入方向,浮点舍入宏之一 |
返回值
1) 成功时为 0 ,否则为非零。
2) 描述当前舍入方向的浮点舍入宏,或若不能确定方向则为负值
注意
当前舍入方向反映最近的 fesetround
的效果,亦能以 FLT_ROUNDS 查询。
示例
运行此代码
#include <stdio.h> #include <math.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON void show_fe_current_rounding_method(void) { printf("current rounding method: "); switch (fegetround()) { case FE_TONEAREST: printf ("FE_TONEAREST"); break; case FE_DOWNWARD: printf ("FE_DOWNWARD"); break; case FE_UPWARD: printf ("FE_UPWARD"); break; case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break; default: printf ("unknown"); }; printf("\n"); } int main(void) { /* 默认舍入方法 */ show_fe_current_rounding_method(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); /* 两整数的中央值 */ printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* 两整数的中央值 */ /* 保存舍入方法。 */ int curr_method = fegetround(); /* 临时更改当前舍入方法。 */ fesetround(FE_DOWNWARD); show_fe_current_rounding_method(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* 恢复舍入方法。 */ fesetround(curr_method); show_fe_current_rounding_method(); return 0; }
可能的输出:
current rounding method: FE_TONEAREST +11.5 -> +12.0 +12.5 -> +12.0 current rounding method: FE_DOWNWARD +11.5 -> +11.0 +12.5 -> +12.0 current rounding method: FE_TONEAREST
引用
- C11 standard (ISO/IEC 9899:2011):
- 7.6.3.1 The fegetround function (p: 212)
- 7.6.3.2 The fesetround function (p: 212-213)
- C99 standard (ISO/IEC 9899:1999):
- 7.6.3.1 The fegetround function (p: 193)
- 7.6.3.2 The fesetround function (p: 193-194)
参阅
(C99)(C99)(C99) |
用当前舍入模式取整到整数 (函数) |
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99) |
使用当前舍入模式取整到整数,若结果有误则产生异常 (函数) |