跳到主要内容

8. fenv.h — 浮点环境

提供浮点环境控制。头文件: <fenv.h>。

int feclearexcept(int excepts)

清除浮点异常标志。

  • 输入: excepts 异常标志位掩码
  • 输出: int 0 成功

int fegetexceptflag(fexcept_t *flagp, int excepts)

获取异常标志。

  • 输入: flagp 标志指针(输出), excepts 异常位掩码
  • 输出: int 0 成功

int fesetexceptflag(const fexcept_t *flagp, int excepts)

设置异常标志。

  • 输入: flagp 标志指针, excepts 异常位掩码
  • 输出: int 0 成功

int feraiseexcept(int excepts)

引发浮点异常。

  • 输入: excepts 异常位掩码
  • 输出: int 0 成功

int fetestexcept(int excepts)

测试异常标志。

  • 输入: excepts 异常位掩码
  • 输出: int 当前设置的异常位

int fegetenv(fenv_t *envp)

保存浮点环境。

  • 输入: envp 环境指针(输出)
  • 输出: int 0 成功

int feholdexcept(fenv_t *envp)

保存环境并清除异常。

  • 输入: envp 环境指针(输出)
  • 输出: int 0 成功
  • 注意: 保存当前环境并设置不引发异常

int fesetenv(const fenv_t *envp)

恢复浮点环境。

  • 输入: envp 环境指针
  • 输出: int 0 成功
  • 注意: 传入 FE_DFL_ENV 恢复默认环境

int feupdateenv(const fenv_t *envp)

恢复环境并保留当前异常。

  • 输入: envp 环境指针
  • 输出: int 0 成功
  • 注意: 先恢复环境,再引发当前已发生的异常

int fegetround(void)

获取当前舍入模式。

  • 输入: 无
  • 输出: int 舍入模式(FE_TONEAREST 等)
  • 注意: kf32 不支持(软浮点时始终返回 FE_TONEAREST)

int fesetround(int round)

设置舍入模式。

  • 输入: round 舍入模式
  • 输出: int 0 成功
  • 注意: kf32 不支持(软浮点时非 FE_TONEAREST 返回失败)