C言語で値を「四捨五入」する方法

C/C++

 こんにちは。今回は、C言語を使い、値を四捨五入する方法を紹介していきます。四捨五入する方法、「関数を使う方法」「関数を使わず自力で行う方法」があります。

1. 関数を使わずに四捨五入する方法

 では、まず関数を使わずに四捨五入する方法を紹介します。

 結論から言ってしまうと、四捨五入は計算結果に0.5を足せばできます。

#include <stdio.h>

int main()
{
    double posValue = 4.6;    //positive-valueの略
    double negValue = -1.5;   //negative-valueの略
    int posResult;
    int negResult;

    posResult = posValue + 0.5;
    negResult = negValue - 0.5;

    printf("%d",posResult);  //5
    printf("%d",negResult);  //-2
}

 ↑はサンプルコードです。自動キャストを利用した方法。

 正の数を四捨五入するときは、0.5を足し、負の数の場合は0.5を引きます。

 double型の変数をint型の変数に代入することで、小数点が切り捨てられ、結果的に四捨五入できます。

 以上が関数を使わずに四捨五入する方法です。

2. 関数を使って四捨五入する方法

 次に関数を使って四捨五入する方法を紹介します。

 C言語では、四捨五入をしてくれる「round関数」という便利な関数があります。使うときはmath.hをインクルードしましょう。

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

int main()
{
	double x = 4.5;
	int answer;

	answer = round(x);
	printf("%d", answer);
}

↑がサンプルコードです。round関数は引数の値を、四捨五入してdouble型で返します。

 注意点ですが、割り算などで四捨五入したい値xがint型の場合はキャストをしましょう。

/*int型同士の割り算の場合*/
#include <stdio.h>
#include <math.h>

int main()
{
    int a = 5;
    int b = 3;
    int answer;

    answer = round((double)a / (double)b); //int型のa,bをdouble型でキャスト

    printf("%d", answer);
}

 ↑キャストした場合のサンプルコード。

まとめ

 今回は、C言語で値を四捨五入する方法を解説しました。

 関数を使わない場合は、値に0.5を足し(引き)、int型にするとよいでしょう。

 関数を使うなら、値をround関数の引数に指定しましょう。

 最後まで読んで頂き、ありがとうございました。

*コメントでくださったご意見を参考にし、負の数を関数なしで四捨五入する場合も解説させていただきました。「嶋 久登」様ありがとうございました。*

コメント

  1. 嶋 久登 より:

    0.5を足してIntに代入する方法だと、負の数の時うまくいかないですよね。そのことに触れないのは不親切だと思います。

    • taropou より:

      コメントありがとうございます。記事内で関数を使わずに、正の数・負の数の両方を四捨五入する方法について追記しました。ご確認いただければ幸いです。

タイトルとURLをコピーしました