当前位置: C语言 -- 标准库 -- <fenv.h> -- FE_TONEAREST

FE_TONEAREST宏


概要:

#define FE_TONEAREST value  //value值由具体实现定义。


描述:

该宏表示就近舍入,该宏会扩展为一个int类型的非负值常量表达式。就近舍入,以2.55为例,就是取最接近2.55的可表示值;如果在两个可表示值中间,则取偶数可表示值。

当且仅当实现支持通过fegetroundfesetround函数获取和设置舍入模式时,宏FE_TONEAREST才会被定义。

具体实现中,还可能定义一些以FE_和一个大写字母开头的表示舍入模式的宏,这些宏同样会扩展为int类型的不同的非负值常量表达式。


舍入模式不影响下述情况:

1、浮点类型向整数类型的隐式转换(总是向0舍入)。

2、常量表达式中的浮点算术运算结果(总是就近舍入)。

3、一些标准库函数的舍入模式(例如:floorceil等)。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
/*宏FE_TONEAREST范例*/

#include <fenv.h>
#include <math.h>
#include <stdio.h>

#pragma STDC FENV_ACCESS ON

int main(void)
{
    fesetround(FE_TONEAREST);
    puts("Current rounding direction: Round to nearest.");
    printf("nearbyint(2.55) = %f\n",nearbyint(2.55));
    printf("nearbyint(2.35) = %f\n",nearbyint(2.35));
    printf("nearbyint(2.50) = %f\n",nearbyint(2.50));
    printf("nearbyint(3.50) = %f\n",nearbyint(3.50));

    return 0;
}


输出:

Current rounding direction: Round to nearest.

nearbyint(2.55) = 3.000000

nearbyint(2.35) = 2.000000

nearbyint(2.50) = 2.000000

nearbyint(3.50) = 4.000000


相关内容:
FE_DOWNWARD 表示向下舍入的宏。
FE_TOWARDZERO 表示向0舍入的宏。
FE_UPWARD 表示向上舍入的宏。