Home C&C++函数库 c++ 语法 程序源码 Linux C库

fesetround

函数(C++11)   <cfenv>


int fesetround (int rdir);

设置舍入模式

将rdir设置为浮点环境的当前舍入模式。
调用此函数的程序应确保为调用启用了编译标志 FENV_ACCESS

☲  参数


rdir

定义为舍入模式的值之一:
宏值 说明
FE_DOWNWARD 向下舍入
FE_TONEAREST 就近舍入模式
FE_TOWARDZERO 趋零舍入模式
FE_UPWARD 向上舍入


某些库实现可能支持额外的浮点舍入模式值(其对应的宏也以FE_开头)。

C99:
在<fenv.h>中,库可以只定义它们支持的上面的宏值(其他的可能不定义)。

C++11:
至少上面所有的宏值都在<cfenv>中定义(即使实现不支持)。

☉  返回值



如果成功设置了所请求的舍入方向,则为零。 否则,为非零值。

☣  示例



/* fesetround example */
#include <stdio.h>      /* printf */
#include <fenv.h>       /* fesetround, FE_* */
#include <math.h>       /* rint */
#pragma STDC FENV_ACCESS on

int main ()
{
  printf ("rounding -3.8:\n");

  fesetround(FE_DOWNWARD);
  printf ("FE_DOWNWARD: %.1f\n", rint(-3.8));

  fesetround(FE_TONEAREST);
  printf ("FE_TONEAREST: %.1f\n", rint(-3.8));

  fesetround(FE_TOWARDZERO);
  printf ("FE_TOWARDZERO: %.1f\n", rint(-3.8));

  fesetround(FE_UPWARD);
  printf ("FE_UPWARD: %.1f\n", rint(-3.8));
  return 0;
}

可能输出:

rounding -3.8:
FE_DOWNWARD: -4.0
FE_TONEAREST: -4.0
FE_TOWARDZERO: -3.0
FE_UPWARD: -3.0

↭  数据竞争



每个线程使用自己的状态维护一个单独的浮点环境。如果生成一个新线程就复制当前状态。[这适用于C11和c++ 11实现]

➤  异常



无抛出保证:此函数不会抛出异常。

🍄  另请参阅


fegetround 获取舍入方向模式(function )
fesetenv 设置浮点环境(function )
rint 舍入的整数值(function )


联系我们 免责声明 关于CandCplus 网站地图