Split a 'Decimal' in VB.NET

2020-02-13 08:07发布

I am sure this is a very simple problem, but I am new to VB.NET, so I am having an issue with it.

I have a Decimal variable, and I need to split it into two separate variables, one containing the integer part, and one containing the fractional part.

For example, for x = 12.34 you would end up with a y = 12 and a z = 0.34.

Is there a nice built-in functions to do this or do I have to try and work it out manually?

3条回答
我想做一个坏孩纸
2楼-- · 2020-02-13 08:14

Simply:

DecimalNumber - Int(DecimalNumber)
查看更多
Lonely孤独者°
3楼-- · 2020-02-13 08:18

You can use Math.Truncate(decimal) and then subtract that from the original. Be aware that that will give you a negative value for both parts if the input is decimal (e.g. -1.5 => -1, -.5)

EDIT: Here's a version of Eduardo's code which uses decimal throughout:

Sub SplitDecimal(ByVal number As Decimal, ByRef wholePart As Decimal, _
                 ByRef fractionalPart As Decimal)
    wholePart = Math.Truncate(number)
    fractionalPart = number - wholePart
End Sub
查看更多
再贱就再见
4楼-- · 2020-02-13 08:22

(As Jon Skeet says), beware that the integer part of a decimal can be greater than an integer, but this function will get you the idea.

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

Use the Jon version if you are using big numbers.

查看更多
登录 后发表回答