Разделить 'Десятичный' в VB.NET

Я уверен, что это очень простая проблема, но я новичок в VB.NET, поэтому у меня возникла проблема с ним.

У меня есть Decimalпеременная, и мне нужно разделить ее на две отдельные переменные, одна из которых содержит целую часть, а другая содержит дробную часть.

Например, для x = 12,34 вы бы получили ay = 12 и az = 0,34.

Есть хорошие встроенные функции, чтобы сделать это, или я должен попытаться решить это вручную?

12.12.2008 10:40:38
3 ОТВЕТА
РЕШЕНИЕ

Вы можете использовать Math.Truncate (десятичное число), а затем вычесть это из оригинала. Имейте в виду, что это даст вам отрицательное значение для обеих частей, если ввод десятичный (например, -1.5 => -1, -.5)

РЕДАКТИРОВАТЬ: Вот версия кода Эдуардо, который использует десятичный во всем:

Sub SplitDecimal(ByVal number As Decimal, ByRef wholePart As Decimal, _
                 ByRef fractionalPart As Decimal)
    wholePart = Math.Truncate(number)
    fractionalPart = number - wholePart
End Sub
20
12.12.2008 11:09:13

(Как говорит Джон Скит), имейте в виду, что целая часть десятичной дроби может быть больше, чем целое число, но эта функция поможет вам понять.

    Sub SlipDecimal(ByVal Number As Decimal, ByRef IntegerPart As Integer, _
                    ByRef DecimalPart As Decimal)
        IntegerPart = Int(Number)
        DecimalPart = Number - IntegerPart
    End Sub

Используйте версию Jon, если вы используете большие числа.

4
2.01.2017 22:45:58
Десятичные дроби могут выходить за пределы диапазона целых чисел (и длинных)
Jon Skeet 12.12.2008 10:52:09

Просто:

DecimalNumber - Int(DecimalNumber)
1
2.01.2017 22:46:36
Прошу вас добавить немного контекста вокруг вашего ответа. Трудно понять ответы только по коду или по ссылке. Это поможет вам и будущим читателям, если вы сможете добавить больше информации в свой пост.
RBT 3.01.2017 00:17:30