Здравствуйте,
Round(20.665m,2) округляется до 20.67, а вот Round(20.665,2) округляется до 20.66.
Главная причина проблемы - это недостаточная точность типов Double и Float.
вместо числа 20.665 на самом деле может храниться что-то типа 20.664999999999998
соответственно и округление не срабатывает правильно.
проблема описана например тут:
https://stackoverflow.com/questions/432 ... zero-81-72
а также тут (в разделе "Округление и точность"):
https://learn.microsoft.com/ru-ru/dotne ... em_Double_
> А если ещё внутри Round использовать не число, а выражение, SumIf например, то при использовании m будет синтаксическая ошибка.
m - это постфикс только для чисел.
для выражений надо использовать приведение типов, например:
Round((decimal)SumIf(...),2)
Спасибо.