.Net имеет встроенную поддержку для арифметического и банковского округления:
//midpoint always goes 'up': 2.5 -> 3
Math.Round( input, MidpointRounding.AwayFromZero );
//midpoint always goes to nearest even: 2.5 -> 2, 5.5 -> 6
//aka bankers' rounding
Math.Round( input, MidpointRounding.ToEven );
«Четное» округление фактически является значением по умолчанию, хотя «вдали от нуля» - это то, что вы выучили в школе.
Это потому, что под капотом компьютерные процессоры также выполняют округление банкиров.
//defaults to banker's
Math.Round( input );
Я бы подумал, что любая строка формата округления по умолчанию будет округлять банкиров, разве это не так?