函式
<cfenv>

fesetround

int fesetround (int rdir);
設定舍入方向模式
rdir 設定為浮點環境的當前舍入方向模式

呼叫此函式的程式應確保在呼叫時啟用了 pragma FENV_ACCESS

引數

rdir
定義為舍入方向模式的值之一
宏值描述
FE_DOWNWARD向下舍入。
FE_TONEAREST舍入到最近的值。
FE_TOWARDZERO向零舍入。
FE_UPWARD向上舍入。
某些庫實現可能支援額外的浮點舍入方向值(其對應的宏也以 FE_ 開頭)。
庫可能僅在 <fenv.h> 中定義它們支援的上述宏值(其他宏可能未定義)。
<cfenv> 中至少定義了所有上述宏值。
如果傳遞了這些宏定義之外的 int 值,則該函式不會更改舍入方向模式並返回一個非零值。

返回值

如果請求的舍入方向設定成功,則返回零。
否則,返回一個非零值。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* fesetround example */
#include <stdio.h>      /* printf */
#include <fenv.h>       /* fesetround, FE_* */
#include <math.h>       /* rint */
#pragma STDC FENV_ACCESS on

int main ()
{
  printf ("rounding -3.8:\n");

  fesetround(FE_DOWNWARD);
  printf ("FE_DOWNWARD: %.1f\n", rint(-3.8));

  fesetround(FE_TONEAREST);
  printf ("FE_TONEAREST: %.1f\n", rint(-3.8));

  fesetround(FE_TOWARDZERO);
  printf ("FE_TOWARDZERO: %.1f\n", rint(-3.8));

  fesetround(FE_UPWARD);
  printf ("FE_UPWARD: %.1f\n", rint(-3.8));
  return 0;
}

可能的輸出

rounding -3.8:
FE_DOWNWARD: -4.0
FE_TONEAREST: -4.0
FE_TOWARDZERO: -3.0
FE_UPWARD: -3.0


資料競爭

每個執行緒維護一個獨立的浮點環境及其自身的狀態。生成一個新執行緒會複製當前狀態。[此規定適用於 C11 和 C++11 實現]

異常

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

另見