fegetround, fesetround
From cppreference.com
| ヘッダ <fenv.h> で定義 |
||
| int fesetround( int round ); |
(1) | (C99以降) |
| int fegetround(); |
(2) | (C99以降) |
1) 指定された引数 round で浮動小数点丸め方向を設定しようとします。引数は、浮動小数点丸めマクロのいずれかであると想定されます。
2) 現在の丸め方向に対応する 浮動小数点丸めマクロの値を返します。
目次 |
[編集] パラメータ
| round | - | 浮動小数点丸めマクロのいずれかである丸め方向 |
[編集] 戻り値
1) 成功した場合は 0、それ以外の場合はゼロ以外の値を返します。
2) 現在の丸め方向を表す 浮動小数点丸めマクロ。方向を決定できない場合は負の値を返します。
[編集] 注
直近の fesetround の影響を反映した現在の丸めモードは、FLT_ROUNDS でも照会できます。
[編集] 例
このコードを実行
#include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON void show_fe_current_rounding_direction(void) { printf("current rounding direction: "); switch (fegetround()) { case FE_TONEAREST: printf ("FE_TONEAREST"); break; case FE_DOWNWARD: printf ("FE_DOWNWARD"); break; case FE_UPWARD: printf ("FE_UPWARD"); break; case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break; default: printf ("unknown"); }; printf("\n"); } int main(void) { /* Default rounding direction */ show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); /* midway between two integers */ printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* midway between two integers */ /* Save current rounding direction. */ int curr_direction = fegetround(); /* Temporarily change current rounding direction. */ fesetround(FE_DOWNWARD); show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* Restore default rounding direction. */ fesetround(curr_direction); show_fe_current_rounding_direction(); return 0; }
実行結果の例
current rounding direction: FE_TONEAREST +11.5 -> +12.0 +12.5 -> +12.0 current rounding direction: FE_DOWNWARD +11.5 -> +11.0 +12.5 -> +12.0 current rounding direction: FE_TONEAREST
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.6.3.1 The fegetround function (p: TBD)
- 7.6.3.2 The fesetround function (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.6.3.1 The fegetround function (p: TBD)
- 7.6.3.2 The fesetround function (p: TBD)
- C11標準 (ISO/IEC 9899:2011)
- 7.6.3.1 The fegetround function (p: 212)
- 7.6.3.2 The fesetround function (p: 212-213)
- C99標準 (ISO/IEC 9899:1999)
- 7.6.3.1 The fegetround function (p: 193)
- 7.6.3.2 The fesetround function (p: 193-194)
[編集] 関連項目
| (C99)(C99)(C99) |
現在の丸めモードを使用して整数に丸める (関数) |
| (C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99) |
現在の丸めモードを使用して整数に丸める 結果が異なる場合は例外を送出する (関数) |
| C++ ドキュメント (fegetround, fesetround)
| |