Actually there are many different valid rounding behaviors, and what you get can depend on how you go about rounding.

In C#, you use `Math.Round()`

. Its default behavior is to use “Banker’s Rounding”, which rounds to the nearest even integer. That means 10.5 rounds to 10 and 11.5 rounds to 12. This behavior is more “fair” over the spectrum of numbers, because technically if you “round up at >= 0.5” you have a teeny-tiny bias towards rounding up.

So the current rounding behavior works in your favor that extra 1% of the time, you just picked out a specific instance where it works against you.