【C++】std::round で四捨五入(最も近い整数への丸め)を行う方法

目次

はじめに

C++で浮動小数点数(doublefloat)を扱う際、一般的な「四捨五入」のように、最も近い整数に丸めたい場合があります。

この目的のために、C++11以降の標準ライブラリ <cmath> には std::round という、まさにそのための関数が用意されています。

この記事では、round関数の基本的な使い方と、.5 の場合の挙動について解説します。


【前提】C++11とは?

C++11(シーピープラスいちいち)は、2011年に正式化されたC++言語のメジャーアップデート版です。std::round はこのC++11で導入されたため、利用するにはC++11以降に対応したコンパイラが必要です。


round を使ったサンプルコード

このコードは、いくつかの正の数と負の数に対して round を適用し、その結果を出力します。

完成コード

#include <iostream>
#include <cmath> // round 関数を使うために必要

using namespace std;

int main() {
    cout << "--- round() のテスト ---" << endl;
    
    // 正の数の場合
    cout << "3.4 -> " << round(3.4) << endl; // -> 3
    cout << "3.5 -> " << round(3.5) << endl; // -> 4
    cout << "3.6 -> " << round(3.6) << endl; // -> 4

    cout << "\n";
    
    // 負の数の場合
    cout << "-3.4 -> " << round(-3.4) << endl; // -> -3
    cout << "-3.5 -> " << round(-3.5) << endl; // -> -4
    cout << "-3.6 -> " << round(-3.6) << endl; // -> -4
    
    return 0;
}

コードの解説と挙動

std::round(x)

  • 機能: 引数 x を、最も近い整数値に丸めます。
  • 戻り値: 丸められた値を、doublefloatなどの浮動小数点数型で返します。
  • .5 の扱い: 小数部がちょうど 0.5 の場合、ゼロから遠い方の整数に丸められます。
    • round(3.5)4 になります。
    • round(-3.5)-4 になります。

これは、日本の小学校で習う「四捨五入」(JIS Z 8401)が .5 の場合に常に大きい方の整数へ丸める(例: -3.5-3)のとは、負の数において挙動が異なるため、注意が必要です。

rintnearbyint との違い

<cmath> には、rintnearbyint といった、よく似た丸め関数も存在します。これらは、.5 の場合に「最も近い偶数の整数」に丸める(最近接偶数への丸め、または銀行家の丸め)という、異なる丸め規則を採用しています。一般的な四捨五入の用途では、round を使うのが最も直感的です。


まとめ

今回は、C++11の<cmath>ライブラリを使って、浮動小数点数を最も近い整数に丸める std::round 関数を解説しました。

  • <cmath> ヘッダーをインクルードする。
  • round(数値) の形で呼び出す。
  • 小数部が .5 の場合は、**絶対値が大きい方(ゼロから遠い方)**の整数に丸められる。

一般的な「四捨五入」のロジックを実装したい場合に、round は最もシンプルで分かりやすい選択肢です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次