Bankers Rounding in Math.Round Method
What would be the output of the following 
program?
 Console.Write(Math.Round(-0.5).ToString() + “~”);
 Console.Write(Math.Round(0.5).ToString()+ 
“~”);
 Console.Write(Math.Round(1.5).ToString()+ “~”);
 Console.Write(Math.Round(2.5).ToString()+ 
“~”);
If you think the answer is 0~0~2~3~ then you are wrong. The 
actual answer is 0~0~2~2~.
And this is no compiler or runtime bug. This is because Dot net 
framework’s Math class uses Banker’s rounding to round things. According to the 
banker’s rounding the 0.5 number are rounded to the nearest even number. If the 
fractional component of d is halfway between two integers, one of which is even 
and the other odd, the even number is returned.
This can lead to some unexpected bugs in financial calculations based on the more well-known Round-Half-Up rounding. To control the type of rounding used by the Round(Decimal) method, call the Math.Round(Decimal, MidpointRounding) overload.
Vikram