Разделить 'Десятичный' в VB.NET - PullRequest
12 голосов
/ 12 декабря 2008

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

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

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

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

Ответы [ 3 ]

20 голосов
/ 12 декабря 2008

Вы можете использовать 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
4 голосов
/ 12 декабря 2008

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

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

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

1 голос
/ 21 марта 2016

Просто:

DecimalNumber - Int(DecimalNumber)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...