fesetround | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


fesetround関数

概要

丸め方向を設定する

ヘッダ

fenv.h

形式

int fesetround(int round);

引数

round

丸め方向。FE_ で始まる名前の丸め方向マクロのいずれかを指定する。

戻り値

成功した場合は 0、失敗した場合は 0以外を返す。

詳細

丸め方向を設定する。
引数round に指定できる値は、標準では FE_TONEARESTFE_UPWARDFE_DOWNWARDFE_TOWARDZERO の4つのマクロがある。ただし、処理系がサポートしない丸め方向については、該当のマクロも定義されない。また、処理系が標準以外の丸め方向をサポートする場合は、FE_ で始まる名前のマクロが追加定義される。
この設定はたとえば、nearbyint関数rint関数などの動作に影響を与える。また、FLT_ROUNDS から得られる値も変化する。

注意

FENV_ACCESS 標準プラグマの状態が ON でなければならない。

使用例

#include <fenv.h>
#include <math.h>
#include <stdio.h>

#if defined(_MSC_VER)
#pragma fenv_access (on)
#else
#pragma STDC FENV_ACCESS ON
#endif

void nearbyint_test(int round)
{
    if (fesetround(round) == 0) {
        printf("%lf\n", nearbyint(3.1));
        printf("%lf\n", nearbyint(3.9));
        printf("%lf\n", nearbyint(-3.1));
        printf("%lf\n", nearbyint(-3.9));
    }
    else {
        puts("not supported.");
    }
}

int main(void)
{
    puts("[ FE_TONEAREST ]");
    nearbyint_test(FE_TONEAREST);

    puts("[ FE_UPWARD ]");
    nearbyint_test(FE_UPWARD);

    puts("[ FE_DOWNWARD ]");
    nearbyint_test(FE_DOWNWARD);

    puts("[ FE_TOWARDZERO ]");
    nearbyint_test(FE_TOWARDZERO);
}

実行結果:

[ FE_TONEAREST ]
3.000000
4.000000
-3.000000
-4.000000
[ FE_UPWARD ]
4.000000
4.000000
-3.000000
-3.000000
[ FE_DOWNWARD ]
3.000000
3.000000
-4.000000
-4.000000
[ FE_TOWARDZERO ]
3.000000
3.000000
-3.000000
-3.000000

関連

現在の丸め方向を、fegetround関数で取得できる。

解説章


参考リンク


更新履歴

’2018/6/14 FLT_ROUNDS への影響について追記。

’2018/5/26 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る