最終更新日時:
が更新

履歴 編集

macro
<cfenv>

FE_DOWNWARD(C++11)

# define FE_DOWNWARD implementation-defined

概要

浮動小数点数の丸め方式として、「負の無限大方向への丸め (切り下げ, floor, round down)」を表すマクロ。

このマクロは、標準ライブラリの丸め処理で使用される丸め方式をユーザーが選択するために使用する。

このマクロの値は、整数の定数式として定義され、非負の値を持つ。

#include <iostream>
#include <cfenv>
#include <cmath>

int main()
{
  std::fesetround(FE_DOWNWARD);

  float ar[] = {
      2.0,  2.1,  2.5,  2.9,
     -2.0, -2.1, -2.5, -2.9
  };

  for (float f : ar) {
    int x = std::nearbyint(f);
    std::cout << f << " -> " << x << std::endl;
  }
}

出力

2 -> 2
2.1 -> 2
2.5 -> 2
2.9 -> 2
-2 -> -2
-2.1 -> -3
-2.5 -> -3
-2.9 -> -3

バージョン

言語

  • C++11

処理系

  • Clang, C++11 mode: 3.0
  • GCC, C++11 mode: 4.3.0
  • ICC: ??
  • Visual C++: 12.0, 14.0
    • コンパイルオプション/fp:strictまたは#pragma fenv_access (on)が必要。さもなくば、正しく動作しないおそれがある。