C# - 指定した精度の数値に四捨五入する

C#指定した精度の数値に四捨五入する

スポンサーリンク

数値を丸めるのは、System.Math クラスの Round メソッドで可能です。しかし、この Round メソッドは「偶数丸め」(JIS 丸めともいう) と呼ばれる手法で数値を丸めます。

この「偶数丸め」は日本国でも標準とされているのですが、残念ながらあまり知られていません。やはり、四捨五入が必要な業務が多かったりするわけです。

以下は、指定した桁で四捨五入をするメソッドです。

Floor メソッド、Ceiling メソッド及び、Pow メソッドの詳細は以下をご覧ください。

サンプルコード

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

C# 全般
/// ------------------------------------------------------------------------
/// <summary>
///     指定した精度の数値に四捨五入します。</summary>
/// <param name="dValue">
///     丸め対象の倍精度浮動小数点数。</param>
/// <param name="iDigits">
///     戻り値の有効桁数の精度。</param>
/// <returns>
///     iDigits に等しい精度の数値に四捨五入された数値。</returns>
/// ------------------------------------------------------------------------
public static double ToHalfAdjust(double dValue, int iDigits) {
    double dCoef = System.Math.Pow(10, iDigits);

    return dValue > 0 ? System.Math.Floor  ((dValue * dCoef) + 0.5) / dCoef:
                        System.Math.Ceiling((dValue * dCoef) - 0.5) / dCoef;
}

使用例は以下のようになります。

C# 全般
    // 有効小数桁数が小数第 2 位になるように四捨五入する
    double dValue = ToHalfAdjust(12.325, 2);

    // 四捨五入した結果を表示する
    MessageBox.Show(dValue.ToString());  //12.33

関連するリファレンス

準備中です。

スポンサーリンク