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

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

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

Например, для x = 12.34 вы получите y = 12 и z = 0.34.

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

Ответ 1

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

EDIT: здесь версия кода Эдуардо, которая использует десятичное целое:

Sub SplitDecimal(ByVal number As Decimal, ByRef wholePart As Decimal, _
                 ByRef fractionalPart As Decimal)
    wholePart = Math.Truncate(number)
    fractionalPart = number - wholePart
End Sub

Ответ 2

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

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

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

Ответ 3

Просто:

DecimalNumber - Int(DecimalNumber)