2008-12-12 71 views
11

我相信这是一个非常简单的问题,但我是VB.NET的新手,所以我遇到了一个问题。在VB.NET中拆分'Decimal'

我有一个Decimal变量,我需要将它分成两个单独的变量,一个包含整数部分,另一个包含小数部分。

例如,对于x = 12.34,您将以y = 12和z = 0.34结束。

有没有一个很好的内置函数来做到这一点,或者我必须尝试手动解决它?

回答

19

您可以使用Math.Truncate(decimal),然后从原始值中减去该值。要知道,这会给你两个部分为负值,如果输入的是十进制(例如-1.5 => -1,-0.5)

编辑:这里是它采用十进制各地的Eduardo的代码版本:

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

(正如Jon Skeet所说的),要小心小数的整数部分可以大于一个整数,但是这个函数会给你带来想法。

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

如果您使用的是大数字,请使用Jon版本。

+0

小数可以去整数(和长)的范围之外的方式 – 2008-12-12 10:52:09

+0

是的,但它只是想法 – 2008-12-12 10:56:06

0

简单:

DecimalNumber - Int(DecimalNumber)