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

FE_UPWARD宏


概要:

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


描述:

该宏表示向上舍入,即向+∞舍入。该宏会扩展为一个int类型的非负值常量表达式。向上舍入,以2.55为例,就是取不小于2.55的最小可表示值。

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

具体实现中,还可能定义一些以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_UPWARD范例*/

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

#pragma STDC FENV_ACCESS ON

int main(void)
{
    fesetround(FE_UPWARD);
    puts("Current rounding direction: Round upward.");
    printf("nearbyint(2.55) = %f\n",nearbyint(2.55));
    printf("nearbyint(2.35) = %f\n",nearbyint(2.35));
    printf("nearbyint(-2.55) = %f\n",nearbyint(-2.55));
    printf("nearbyint(-2.35) = %f\n",nearbyint(-2.35));

    return 0;
}


输出:

Current rounding direction: Round upward.

nearbyint(2.55) = 3.000000

nearbyint(2.35) = 3.000000

nearbyint(-2.55) = -2.000000

nearbyint(-2.35) = -2.000000


相关内容:
FE_DOWNWARD 表示向下舍入的宏。
FE_TONEAREST 表示就近舍入的宏。
FE_TOWARDZERO 表示向0舍入的宏。