名前空間
変種
操作

std::fegetround, std::fesetround

提供: cppreference.com
< cpp‎ | numeric‎ | fenv
 
 
 
 
ヘッダ <cfenv> で定義
int fesetround( int round )
(1) (C++11およびそれ以降)
int fegetround()
(2) (C++11およびそれ以降)

浮動小数点の丸め方向を管理します。

1) 引数 round と等しい浮動小数点の丸め方向の確立を試みます。 round浮動小数点丸めマクロのひとつであることが期待されます。
2) 現在の丸め方向に対応する浮動小数点丸めマクロの値を返します。

目次

[編集] 引数

round - 丸め方向、浮動小数点丸めマクロのひとつ

[編集] 戻り値

1) 成功した場合は 0、そうでなければ非ゼロ。

2) 現在の丸め方向を表す浮動小数点丸めマクロ、または方向が決められない場合は負の値。

[編集] ノート

最も最近の fesetround の効果を反映する現在の丸めモードは、 FLT_ROUNDS で問い合わせることもできます。

丸めの効果については浮動小数点丸めマクロを参照してください。

[編集]

#include <cmath>
#include <cfenv>
#include <iostream>
 
int main()
{
    #pragma STDC FENV_ACCESS ON
    std::fesetround(FE_DOWNWARD);
    std::cout << "rounding using FE_DOWNWARD: \n" << std::fixed
              << " 12.0 ->  " << std::nearbyint(12.0) << '\n'
              << " 12.1 ->  " << std::nearbyint(12.1) << '\n'
              << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
              << " 12.5 ->  " << std::nearbyint(12.5) << '\n'
              << " 12.9 ->  " << std::nearbyint(12.9) << '\n'
              << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
              << " 13.0 ->  " << std::nearbyint(13.0) << '\n';
    std::fesetround(FE_TONEAREST);
    std::cout << "rounding using FE_TONEAREST: \n"
              << " 12.0 ->  " << std::nearbyint(12.0) << '\n'
              << " 12.1 ->  " << std::nearbyint(12.1) << '\n'
              << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
              << " 12.5 ->  " << std::nearbyint(12.5) << '\n'
              << " 12.9 ->  " << std::nearbyint(12.9) << '\n'
              << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
              << " 13.0 ->  " << std::nearbyint(13.0) << '\n';
}

出力:

rounding using FE_DOWNWARD:
 12.0 ->  12.000000
 12.1 ->  12.000000
-12.1 -> -13.000000
 12.5 ->  12.000000
 12.9 ->  12.000000
-12.9 -> -13.000000
 13.0 ->  13.000000
rounding using FE_TONEAREST: 
 12.0 ->  12.000000
 12.1 ->  12.000000
-12.1 -> -12.000000
 12.5 ->  12.000000
 12.9 ->  13.000000
-12.9 -> -13.000000
 13.0 ->  13.000000

[編集] 関連項目

(C++11)
現在の丸めモードを使用して最も近い整数に丸めます
(関数) [edit]
(C++11)(C++11)(C++11)
現在の丸めモードを使用して最も近い整数に丸めますが、結果が異なる場合は例外を発生します
(関数) [edit]
fegetround, fesetroundC言語リファレンス