2008-12-12 16 views
11

Estoy seguro de que este es un problema muy simple, pero soy nuevo en VB.NET, así que estoy teniendo un problema con él.Dividir un 'Decimal' en VB.NET

Tengo una variable Decimal, y necesito dividirla en dos variables separadas, una que contiene la parte entera y otra que contiene la parte fraccionaria.

Por ejemplo, para x = 12.34 terminaría con una y = 12 y una z = 0.34.

¿Existe alguna buena función integrada para hacer esto o debo intentar resolverlo manualmente?

Respuesta

19

Puede usar Math.Truncate(decimal) y luego restarlo del original. Sé consciente de que le dará un valor negativo para ambas partes si la entrada es decimal (por ejemplo, -1.5 => -1, -.5)

EDIT: He aquí una versión de código de Eduardo decimal que utiliza a lo largo:

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

(Como dice Jon Skeet), tenga en cuenta que la parte entera de un decimal puede ser mayor que un entero, pero esta función le dará la idea.

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

Utilice la versión de Jon si está utilizando números grandes.

+0

Decimales puede ir mucho más fuera de la gama de enteros (y largos) –

+0

Sí, pero sólo la idea –

0

Simplemente:

DecimalNumber - Int(DecimalNumber) 
+0

solicito que por favor añadir un poco más de contexto alrededor de su respuesta. Las respuestas de solo código o solo de enlace son difíciles de entender. Ayudará al solicitante y a los lectores futuros tanto si puede agregar más información en su publicación. – RBT