C# で四捨五入を行いたい場合、Math.Round
を使えば簡単ですが、その挙動についてメモしておきます。
小数点以下を四捨五入
Console.WriteLine(Math.Round(0.44));
Console.WriteLine(Math.Round(0.45));
Console.WriteLine(Math.Round(0.54));
Console.WriteLine(Math.Round(0.55));
出力結果
0
0
1
1
小数点以下第二位で四捨五入
Math.Round
の第二引数で、四捨五入をする桁を指定します。
Console.WriteLine(Math.Round(0.44, 1));
Console.WriteLine(Math.Round(0.45, 1));
Console.WriteLine(Math.Round(0.54, 1));
Console.WriteLine(Math.Round(0.55, 1));
出力結果
0.4
0.4
0.5
0.6
0.45
の結果が 0.5
ではなく 0.4
になっています。
これは、Math.Round
のデフォルトの挙動が最近接偶数への丸めになっているからだそうです。
最近接偶数への丸めについてはググってください。
普通の四捨五入を行いたい場合は、以下のように MidpointRounding.AwayFromZero
を指定します。
Console.WriteLine(Math.Round(0.44, 1, MidpointRounding.AwayFromZero));
Console.WriteLine(Math.Round(0.45, 1, MidpointRounding.AwayFromZero));
Console.WriteLine(Math.Round(0.54, 1, MidpointRounding.AwayFromZero));
Console.WriteLine(Math.Round(0.55, 1, MidpointRounding.AwayFromZero));
出力結果
0.4
0.5
0.5
0.6