Зависит от того, что вы делаете.
Например:
//bankers' rounding - midpoint goes to nearest even
GetIntPart(2.5) >> 2
GetIntPart(5.5) >> 6
GetIntPart(-6.5) >> -6
или
//arithmetic rounding - midpoint goes away from zero
GetIntPart(2.5) >> 3
GetIntPart(5.5) >> 6
GetIntPart(-6.5) >> -7
По умолчанию всегда используется первое, что может быть сюрпризом, но имеет очень хороший смысл .
Ваше явное приведение будет делать:
int intPart = (int)343564564.5
// intPart will be 343564564
int intPart = (int)343564565.5
// intPart will be 343564566
Судя по тому, как вы сформулировали вопрос, звучит так, будто это не то, что вам нужно - вы хотите говорить об этом каждый раз.
Я бы сделал:
Math.Floor(Math.Abs(number));
Также проверьте размер ваших decimal
- они могут быть довольно большими, поэтому вам может потребоваться использовать long
.