まず、AwayFromZeroを指定しない場合の例を以下に記載した。
期待通りになる場合と、ならない場合があるので問題に気付きにくく、厄介!
? Math.Round(100.5) 100 ? Math.Round(101.5) 102 ? Math.Round(102.5) 102 ? Math.Round(103.5) 104 ? Math.Round(104.5) 104
以下のようにMidpointRounding.AwayFromZeroを指定すると期待した通りに四捨五入してくれる。
? Math.Round(100.5, MidpointRounding.AwayFromZero) 101 ? Math.Round(101.5, MidpointRounding.AwayFromZero) 102 ? Math.Round(102.5, MidpointRounding.AwayFromZero) 103 ? Math.Round(103.5, MidpointRounding.AwayFromZero) 104 ? Math.Round(104.5, MidpointRounding.AwayFromZero) 105