# define FLT_ROUNDS implementation-defined
概要
FLT_ROUNDS
は、浮動小数点数の加算の丸めモードを表すマクロである。
FLT_ROUNDS
が
- 0 のとき、0 方向に丸める。
- 1 のとき、最も近い値に丸める。
- 2 のとき、正の無限大方向に丸める。
- 3 のとき、負の無限大方向に丸める。
- -1 のとき、不確定。
その他の数のとき、実装依存の動作をする。
<cfloat>
ヘッダの他のマクロと異なり、FLT_ROUNDS
の値は定数ではなく、<cfenv>
ヘッダの fesetround()
による実行時の丸めモード変更が反映される。
従って、FLT_ROUNDS
は #if
プリプロセッサディレクティブで使用することはできない。
備考
fesetround()
、および、fegetround()
で用いられるマクロ(FE_DOWNWARD
、FE_TONEAREST
、FE_TOWARDZERO
、FE_UPWARD
)の値は、本マクロの値と対応しているわけでは無いため注意。
例
#include <iostream>
#include <cfloat>
#include <cfenv>
int main()
{
std::cout << "FLT_ROUNDS = " << FLT_ROUNDS << '\n';
std::cout << std::fesetround(FE_TOWARDZERO) << '\n';
std::cout << "FLT_ROUNDS = " << FLT_ROUNDS << '\n';
}
出力例
FLT_ROUNDS = 1
0
FLT_ROUNDS = 0