Лучший способ получить целое число часть десятичного числа
каков наилучший способ вернуть всю числовую часть десятичного числа (в c#)? (Это должно работать для очень больших чисел, которые могут не вписываться в int).
GetIntPart(343564564.4342) >> 343564564
GetIntPart(-323489.32) >> -323489
GetIntPart(324) >> 324
цель этого: я вставляю в десятичное (30,4) поле в БД и хочу убедиться, что я не пытаюсь вставить число, чем слишком долго для поля. Определение длины всей числовой части десятичной части является частью этой операции.
6 ответов:
кстати, ребята, (int)Decimal.MaxValue будет переполняться. Вы не можете получить часть "int" десятичного числа, потому что десятичное число слишком велико, чтобы поместить его в поле int. Просто проверить... его даже слишком большой для долго (Int64).
Если вы хотите бит десятичного значения слева от точки, вам нужно сделать это:
Math.Truncate(number)
и возвращает значение as... Десятичный или двойной.
edit: усечение, безусловно, правильная функция!
зависит от того, что ты делаешь.
например:
//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
.
вам просто нужно бросить его, как такого:
int intPart = (int)343564564.4342
Если вы все еще хотите использовать его в качестве десятичного в дальнейших вычислениях, то математика.Усечение (или, возможно, математика.Пол, если вы хотите определенное поведение для отрицательных чисел) - это функция, которую вы хотите.