Одна вещь, которую вы можете не знать, это то, что Math.Round по умолчанию округляет до ближайшего числа EVEN для младшей цифры («округление банкиров»), а не просто до следующего целочисленного значения LSD (" симметричное арифметическое округление ", метод, который вы изучили в начальной школе). Таким образом, значение 7,005 округляется до 7 (7,00), а не 7,01, как вас учила миссис Крабаппел. Причины, по которым находятся на странице math.round MSDN: http://msdn.microsoft.com/en-us/library/system.math.round.aspx
Чтобы изменить это, убедитесь, что вы добавили третий параметр, MidpointRounding.AwayFromZero
, в ваш раунд. Это будет использовать метод округления, с которым вы знакомы:
return Math.Round((decimal)context.SourceValue,2, MidpointRounding.AwayFromZero).ToString();
Кроме того, чтобы два десятичных знака всегда отображались, даже если один или оба равны нулю, укажите числовой формат в функции ToString. «F» или «F» хороши; они будут возвращать число в формате с фиксированной запятой, который в культурах США по умолчанию равен 2 (вы можете переопределить значение по умолчанию, указав количество десятичных знаков):
return Math.Round((decimal)context.SourceValue,2, MidpointRounding.AwayFromZero).ToString("F2");