【C言語】round関数を使わずに四捨五入する方法

この記事では、C言語のプログラミングにおいて、round関数を使わずに四捨五入を行う方法を紹介します。

四捨五入の基本的な考え方と、整数への四捨五入と小数点以下への四捨五入の実装方法を解説します。

初心者の方でもわかりやすく、サンプルコードを交えて説明します。

目次から探す

round関数を使わない四捨五入の方法

基本的な考え方

四捨五入とは、数値を最も近い整数に丸めることです。

C言語には、round関数が用意されており、これを使うことで簡単に四捨五入を行うことができます。

しかし、round関数を使わずに四捨五入を実装する方法もあります。

四捨五入の基本的な考え方は、小数点以下の値を切り捨てるか切り上げるかを判断することです。

具体的には、小数点以下の値が0.5以上であれば切り上げ、0.5未満であれば切り捨てるというルールを適用します。

実装方法

整数への四捨五入

整数への四捨五入は比較的簡単に実装することができます。

以下の手順で行います。

  1. 四捨五入したい数値を変数に代入します。
  2. 小数点以下の値を取り出します。
  3. 取り出した小数点以下の値が0.5以上であれば、整数部分に1を加えます。
  4. 取り出した小数点以下の値が0.5未満であれば、整数部分をそのまま使います。

以下にサンプルコードを示します。

#include <stdio.h>
int main() {
    double num = 3.7; // 四捨五入したい数値
    int integer = (int)num; // 整数部分を取得
    double decimal = num - integer; // 小数点以下の値を取得
    if (decimal >= 0.5) {
        integer++; // 小数点以下の値が0.5以上なら整数部分に1を加える
    }
    printf("四捨五入後の値: %d\n", integer);
    return 0;
}

上記のコードでは、変数numに四捨五入したい数値を代入し、integerに整数部分を、decimalに小数点以下の値を格納しています。

そして、decimalが0.5以上であればintegerに1を加え、最終的な四捨五入後の値を出力しています。

小数点以下への四捨五入

小数点以下への四捨五入も同様に実装することができます。

以下の手順で行います。

  1. 四捨五入したい数値を変数に代入します。
  2. 小数点以下の値を取り出します。
  3. 取り出した小数点以下の値が0.5以上であれば、小数点以下の桁を切り上げるために1を加えます。
  4. 取り出した小数点以下の値が0.5未満であれば、小数点以下の桁を切り捨てるためにそのまま使います。

以下にサンプルコードを示します。

#include <stdio.h>
int main() {
    double num = 3.7; // 四捨五入したい数値
    double rounded = 0.0; // 四捨五入後の値
    int decimalPlaces = 1; // 小数点以下の桁数
    double multiplier = 1.0;
    for (int i = 0; i < decimalPlaces; i++) {
        multiplier *= 10.0; // 小数点以下の桁数に応じて10を掛ける
    }
    rounded = ((int)(num * multiplier + 0.5)) / multiplier; // 四捨五入
    printf("四捨五入後の値: %.1f\n", rounded);
    return 0;
}

上記のコードでは、変数numに四捨五入したい数値を代入し、roundedに四捨五入後の値を格納しています。

また、decimalPlacesに小数点以下の桁数を指定しています。

multiplierは小数点以下の桁数に応じて10を掛けるための変数です。

最終的な四捨五入後の値は、(num * multiplier + 0.5)で四捨五入された整数値を求め、それをmultiplierで割ることで小数点以下の桁を復元しています。

目次から探す