fegetround
, fesetround
現在の浮動小数点丸めモードを取得または設定します。
構文
int fegetround(void);
int fesetround(int round_mode);
パラメーター
round_mode
浮動小数点丸めマクロの 1 つとして設定する丸めモード。 値が浮動小数点丸めマクロの 1 つと等しくない場合、丸めモードは変更されません。
戻り値
成功した場合、 fegetround
は浮動小数点丸めマクロ値の 1 つとして、丸めモードを返します。 現在の丸めモードを決定できない場合は、負の値を返します。
成功した場合、 fesetround
は 0 を返します。 それ以外の場合、0 以外の値が返されます。
解説
浮動小数点演算には、いくつかある丸めモードのいずれかを使用できます。 これらのモードは、浮動小数点演算の結果を格納時に丸める方向を制御します。 fenv.h> で定義されている浮動小数点丸めマクロの名前と動作を次に<示します。
マクロ | 説明 |
---|---|
FE_DOWNWARD |
負の無限大方向に丸めます。 |
FE_TONEAREST |
最近似値に丸めます。 |
FE_TOWARDZERO |
0 方向に丸めます。 |
FE_UPWARD |
正の無限大方向に丸めます。 |
既定の FE_TONEAREST
動作では、偶数 (0) の最下位ビットを持つ最も近い値に向かって、表現可能な値の中間に結果を丸めます。
現在の丸めモードは、これらの操作に影響します:
- 文字列変換。
- 定数式の外部での浮動小数点算術演算子の結果。
rint
およびnearbyint
などの、ライブラリ丸め関数。- 標準ライブラリの数学関数から値を返します。
現在の丸めモードは、次の操作には影響しません。
trunc
、ceil
、floor
、lround
のライブラリ関数。- 常に 0 方向に丸める、浮動小数点数から整数への暗黙的なキャストと変換。
- 常に最近似値に丸める、定数式での浮動小数点算術演算子の結果。
これらの関数を使用するには、呼び出しの前に #pragma fenv_access(on)
ディレクティブを使用してアクセスを妨げる可能性のある浮動小数点の最適化をオフにする必要があります。 詳細については、「fenv_access
」を参照してください。
重要
Windows 10 バージョン 14393 より前のバージョンでは、 fenv.h
定義 FE_UPWARD = 0x0100
および FE_DOWNWARD = 0x0200
. Windows バージョン 14393 では、このヘッダーが更新され、一部の API が (またはその逆) とFE_DOWNWARD
解釈FE_UPWARD
されるバグに対処しました。 Windows バージョン 14393 以降、 FE_UPWARD = 0x0200
および FE_DOWNWARD = 0x0100
以前の値を逆にします。
古い Windows SDK バージョンに対してアプリをコンパイルした場合 (この問題は、OS のバージョンや VS バージョンではなく、SDK のバージョンによって異なります)、この問題が発生する可能性があります。 最新の Windows SDK をターゲットにするようにアプリを更新し、Windows の実装の FE_UPWARD
定義と FE_DOWNWARD
一致するようにします。 アプリを更新して後の Windows SDK をターゲットにできない場合は、コードと同様0x0100
FE_DOWNWARD
0x0200
に定義FE_UPWARD
できます。
必要条件
関数 | C ヘッダー | C++ ヘッダー |
---|---|---|
fegetround , fesetround |
<fenv.h> |
<cfenv> |
詳細については、「互換性」をご覧ください。
関連項目
アルファベット順関数リファレンス
nearbyint
, nearbyintf
, nearbyintl
rint
, rintf
, rintl
lrint
, lrintf
, lrintl
, llrint
, llrintf
, llrintl
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示