- cfloat[meta header]
- macro[meta id-type]
# 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[color ff0000]
- std::fesetround[link ../cfenv.md]
- FE_TOWARDZERO[link ../cfenv/fe_towardzero.md]
FLT_ROUNDS = 1
0
FLT_ROUNDS = 0