C言語編 標準ライブラリのリファレンス llrintf

先頭へ戻る

llrintf関数

概要 小数点以下を、現在の丸め方向に従って丸める
ヘッダ math.h
形式 long long int llrint(float x);
引数 x 対象の浮動小数点数。
戻り値 引数x の小数点以下を丸めた整数値。
詳細 小数点以下を、現在の丸め方向に従って丸めて、その結果の整数値を返す。
現在の丸め方向は、fegetround関数で取得できる。設定の変更は、fesetround関数で行う。
していることは rintf関数と同様だが、戻り値が整数型であるため、実引数の値と結果の値が異なることは想定内であり、浮動小数点例外 FE_INEXACT は発生しない。一方で、結果を戻り値の型では表現できない可能性がある。その場合の戻り値は未規定であり、実装によっては、値域エラーを発生させる。
注意
使用例
#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 llrint_test(int round)
{
    if( fesetround(round) == 0 ){
        printf( "%lld\n", llrintf(3.1f) );
        printf( "%lld\n", llrintf(3.9f) );
        printf( "%lld\n", llrintf(-3.1f) );
        printf( "%lld\n", llrintf(-3.9f) );
    }
    else{
        puts( "not supported." );
    }
}

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

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

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

    puts( "[ FE_TOWARDZERO ]" );
    llrint_test(FE_TOWARDZERO);

    return 0;
}

実行結果:

[ FE_TONEAREST ]
3
4
-3
-4
[ FE_UPWARD ]
4
4
-3
-3
[ FE_DOWNWARD ]
3
3
-4
-4
[ FE_TOWARDZERO ]
3
3
-3
-3
関連 double型バージョンの llrint関数と、long double型バージョンの llrintl関数がある。また、結果を long int型で返す lrintf関数がある。
丸めの方法を、fesetround関数で変更できる。
結果を、仮引数の型と同じ浮動小数点型で返す rint関数rintf関数rintl関数もある。
解説章 第48章


参考リンク



更新履歴

'2018/5/26 新規作成。



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

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

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

Programming Place Plus のトップページへ


はてなブックマーク Pocket に保存 Twitter でツイート Twitter をフォロー
Facebook でシェア Google+ で共有 LINE で送る rss1.0 取得ボタン RSS
管理者情報 プライバシーポリシー