函式
<cfenv>

fegetround

int fegetround (void);
獲取舍入方向模式
返回一個值,該值指示當前*浮點環境*中指定的舍入方向模式。

此函式返回的值是否與<cfloat>中的FLT_ROUNDS相同是未指定的。

引數



返回值

如果函式成功確定了當前舍入模式,並且該模式受實現支援,則函式將返回一個具有對應宏定義的值
宏值描述
FE_DOWNWARD向下舍入。
FE_TONEAREST舍入到最近的值。
FE_TOWARDZERO向零舍入。
FE_UPWARD向上舍入。
某些庫實現可能支援額外的*浮點舍入方向*值(其對應宏也以FE_開頭)。
庫可能僅在 <fenv.h> 中定義它們支援的上述宏值(其他宏可能未定義)。
<cfenv> 中至少定義了所有上述宏值。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* 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 實現]

異常

無異常保證:此函式從不丟擲異常。

另見