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

fegetround

函数   <cfenv>


int fegetround (void);

获得舍入方向模式

返回当前浮点环境中指定的舍入方向模式的值。
该函数返回的值是否与< cfloat>中的FLT_ROUNDS相同未指定。

☲  参数




☉  返回值



如果当前舍入模式被函数成功确定并且被实现支持,函数将返回一个定义了相应宏的值:
宏值 说明
FE_DOWNWARD 向下舍入
FE_TONEAREST 就近舍入模式
FE_TOWARDZERO 趋零舍入模式
FE_UPWARD 向上舍入

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

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

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

☣  示例



/* fegetround / rint example */
#include <stdio.h>      /* printf */
#include <fenv.h>       /* fegetround, FE_* */
#include <math.h>       /* rint */

int main ()
{
  printf ("rounding using ");
  switch (fegetround()) {
    case FE_DOWNWARD: printf ("downward"); break;
    case FE_TONEAREST: printf ("to-nearest"); break;
    case FE_TOWARDZERO: printf ("toward-zero"); break;
    case FE_UPWARD: printf ("upward"); break;
    default: printf ("unknown");
  }
  printf (" rounding:\n");

  printf ( "rint (2.3) = %.1f\n", rint(2.3) );
  printf ( "rint (3.8) = %.1f\n", rint(3.8) );
  printf ( "rint (-2.3) = %.1f\n", rint(-2.3) );
  printf ( "rint (-3.8) = %.1f\n", rint(-3.8) );
  return 0;
}

可能输出:

Rounding using to-nearest rounding:
rint (2.3) = 2.0
rint (3.8) = 4.0
rint (-2.3) = -2.0
rint (-3.8) = -4.0


↭  数据竞争



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


➤  异常



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

🍄  另请参阅



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


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