C# 四捨五入のサンプル(Round)

C#の四捨五入のサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

四捨五入 四捨五入(Round)
注意点 四捨五入の銀行丸め

四捨五入(Round)

public static double Round(double value, MidpointRounding mode)
public static double Round(double value, int digits, MidpointRounding mode)

四捨五入のサンプルです。Roundメソッドを使用します。
Roundメソッドの2つめの数値の引数(digits)は、戻り値の小数部の桁数です。

using System;
class Test1
{
  static void Main()
  {
    double a = 12.262;

    // 小数第一位で四捨五入
    Console.WriteLine(Math.Round(a, MidpointRounding.AwayFromZero)); //12
    // 小数第二位で四捨五入
    Console.WriteLine(Math.Round(a, 1, MidpointRounding.AwayFromZero)); //12.3
    // 小数第三位で四捨五入
    Console.WriteLine(Math.Round(a, 2, MidpointRounding.AwayFromZero)); //12.26

    double b = 12.828;
    // 小数第一位で四捨五入
    Console.WriteLine(Math.Round(b, MidpointRounding.AwayFromZero)); //13
    // 小数第二位で四捨五入
    Console.WriteLine(Math.Round(b, 1, MidpointRounding.AwayFromZero)); //12.8
    // 小数第三位で四捨五入
    Console.WriteLine(Math.Round(b, 2, MidpointRounding.AwayFromZero)); //12.83

  }
}

9行目は、Roundメソッドの2つめの数値の引数がないので、小数第一位で四捨五入され、結果は整数になります。
11行目は、Roundメソッドの2つめの数値の引数が1なので、小数第二位で四捨五入され、結果は少数第一位までの数値になります。

以下は、Microsoft公式のRoundメソッドのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.math.round?view=netframework-4.8

四捨五入の銀行丸め

public enum MidpointRounding
{
        ToEven = 0,
        AwayFromZero = 1
}

Roundメソッドで、3つめの引数のMidpointRounding.AwayFromZeroを指定しない場合、銀行丸めになります。
銀行丸めは、端数が0.5で、整数の箇所が偶数の場合は、ゼロへ丸めます。

using System;
class Test1
{
  static void Main()
  {
    double a = 2.5;
    // 小数第一位で四捨五入
    Console.WriteLine(Math.Round(a)); // 2
    Console.WriteLine(Math.Round(a, MidpointRounding.AwayFromZero)); // 3

    double b = 3.5;
    // 小数第一位で四捨五入
    Console.WriteLine(Math.Round(b)); // 4
    Console.WriteLine(Math.Round(b,MidpointRounding.AwayFromZero)); // 4

  }
}

6行目は、変数に2.5を代入しています。
8行目は、Roundで四捨五入していますが結果は2です。端数が0.5で、整数の箇所が偶数のため銀行丸めになっています。
9行目は、3つめの引数のMidpointRounding.AwayFromZeroを指定しているため結果は3です。

11行目は、変数に3.5を代入しています。
この場合は、整数の箇所が奇数なので結果は4です。

関連の記事

C# 計算のサンプル(a += 3や++aとa++)

△上に戻る