The implementation of Math.Round() is based on IEEE Standard 754, section 4
and works as documented. Basically, you always round toward the even number.
This is refered to as Banker's Rounding.
However, a simple hack for .Net 1.1 and 1.0 is to convert to a string with
..ToString("#.#") and back again. The ToString() method uses a traditional
5/4 round.
decimal.Parse((3.65M).ToString("#.#"))
In .Net 2.0, you can simply specify how rounding should occur:
Math.Round(3.65, 1, MidpointRounding.AwayFromZero) = 3.7
Math.Round(3.65, 1, MidpointRounding.ToEven) = 3.6
BTW: The example you gave would round to 3.8 in either case.
Hope this helps...
Frisky