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です。
関連の記事