C#で数値の四捨五入を行うサンプルです。
四捨五入には「普通の四捨五入」と、「銀行丸め」と呼ばれる2つの方法があります。
普通の四捨五入は、4以下は切り捨てて5以上は切り上げるだけですが、
銀行丸めは、基本普通の四捨五入と基本は同じですが5の扱いが異なります。
5で切り上げた結果が偶数になれば切り上げますが、5で切り上げた結果が奇数になれば切り下げます。
銀行丸めは「最近接偶数丸め」とも呼ばれます。
どちらの場合もMath.Roundメソッドを使用します。
1 2 3 4 5 6 7 8 9 10 11 |
//5なので切り上げ double val1 = Math.Round(1.5, MidpointRounding.AwayFromZero); →2 //5なので切り上げ double val2 = Math.Round(2.5, MidpointRounding.AwayFromZero); →3 //4なので切り下げ double val3 = Math.Round(2.4, MidpointRounding.AwayFromZero); →2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//切り上げた結果2=(偶数)となるため切り上げ。 double val1 = Math.Round(1.5); →2 //切り上げた結果3=(奇数)となるため切り下げ。 double val2 = Math.Round(2.5); →2 //対象が5でない場合は通常の四捨五入 double val3 = Math.Round(2.4); →2 //対象が5でない場合は通常の四捨五入 double val4 = Math.Round(2.6); →3 |
銀行丸めの方が、丸めた結果を積算した結果の誤差が少ないため、普通の四捨五入よりも一般的に使用されます。