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

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

確認環境
・Microsoft Visual Studio Community 2019

目次

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

四捨五入(Round)

四捨五入のサンプルです。Roundメソッドを使用します。

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

  }
}

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

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

四捨五入の銀行丸め

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++)

△上に戻る