fegetround
函数 <cfenv>
int fegetround (void);
获得舍入方向模式
返回当前浮点环境中指定的舍入方向模式的值。
该函数返回的值是否与<
cfloat>中的FLT_ROUNDS相同未指定。
☲ 参数
无
☉ 返回值
如果当前舍入模式被函数成功确定并且被实现支持,函数将返回一个定义了相应宏的值:
某些库实现可能支持额外的浮点舍入方向值(其对应的宏也以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实现]
➤ 异常
无抛出保证:此函数不会抛出异常。
🍄 另请参阅