Вы можете использовать:
decimal n = 189.182M;
n = System.Math.Ceiling (n * 100) / 100;
Объяснение различных функций округления можно найти здесь .
Имейте в виду, что подобные формулыпо-прежнему ограничена ограниченной точностью типа double
, если это тип, который вы используете (ваш вопрос указан как десятичный, но возможно, вы просто имели в виду значение с плавающей запятой с дробным компонентом, а не специфичный type).
Например:
double n = 283.79;
n = System.Math.Ceiling (n * 100);
фактически даст вам 28380
, а не 283.79
, который вы ожидаете (a) .
Если вы хотите получить точные результаты по всем направлениям, вам следует определенно использовать тип decimal
.
(a) Этопотому что самое точное представление IEEE754 с двойной точностью 283.79
на самом деле составляет :
283.790000000000020463630789891
Этот дополнительный (по общему признанию, незначительный) дробный компонент за пределами .79
будет увеличен, то есть он будетдать вам значение выше, чем вы ожидаете.