先頭へ戻る

四捨五入する | Programming Place Plus C言語編 逆引き

Programming Place Plus トップページ -- C言語編 -- 逆引き

先頭へ戻る

この章の概要

この章の概要です。

目的

ある浮動小数点数を、小数点以下で四捨五入したいとします。
小数点の位置以外の箇所で四捨五入を行いたいこともあると思いますが、 小数点の位置での四捨五入を行う方法さえ分かっていれば、 事前に 10n倍してから計算し、結果を 10-n倍して戻すことで実現できます (ただし、桁溢れには注意してください)。

たとえば、「3.4」は「3」に、「3.5」は「4」になるようにします。 また、負数の場合には、「-3.4」は「-3」に、「-3.5」は「-4」になります。

方法①(round関数を使う)

標準ライブラリ関数の round関数を使うのが簡単です。

round関数は、数値を double型で扱いますが、float型で扱いたい場合は、roundf関数が、long double型で扱いたい場合はroundl関数が使えます。

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

int main(void)
{
    printf("%f\n", round(3.4));
    printf("%f\n", round(3.5));
    printf("%f\n", round(-3.4));
    printf("%f\n", round(-3.5));

    return 0;
}

実行結果:

3.000000
4.000000
-3.000000
-4.000000

応用として、小数点以下第2位で四捨五入するには、次のようにします。

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

int main(void)
{
    printf("%f\n", round(3.154 * 100) / 100);
    printf("%f\n", round(3.155 * 100) / 100);
    printf("%f\n", round(-3.154 * 100) / 100);
    printf("%f\n", round(-3.155 * 100) / 100);

    return 0;
}

実行結果:

3.150000
3.160000
-3.150000
-3.160000


参考リンク


更新履歴

'2017/5/27 新規作成。



逆引きのトップページへ

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

Programming Place Plus のトップページへ



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