2008-12-12 12 views
11

Jestem pewien, że jest to bardzo prosty problem, ale jestem nowy w VB.NET, więc mam z tym problem.Podział "dziesiętny" w VB.NET

Mam zmienną Decimal i muszę podzielić ją na dwie oddzielne zmienne, jedną zawierającą część całkowitą i jedną zawierającą część ułamkową.

Na przykład dla x = 12.34 otrzymasz wartość y = 12 i z = 0,34.

Czy jest to dobre wbudowane funkcje do wykonania tej czynności lub czy muszę spróbować wykonać ją ręcznie?

Odpowiedz

19

Można użyć Math.Truncate(decimal), a następnie odjąć je od oryginału. Należy pamiętać, że to daje ujemną wartość dla obu stron, jeśli wejście jest dziesiętny (np -1.5 => -1, -.5)

EDIT: Tutaj jest wersja kodu Eduardo, który używa całej przecinku:

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

(Jak mówi Jon Skeet), należy uważać, że część całkowita liczby dziesiętnej może być większa niż liczba całkowita, ale ta funkcja pozwoli uzyskać pomysł.

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

Użyj wersji Jon, jeśli używasz dużych liczb.

+0

dziesiętne mogą iść sposób poza zakres liczb całkowitych (i wyroby długie) –

+0

Tak, ale to tylko pomysł –

0

prostu:

DecimalNumber - Int(DecimalNumber) 
+0

proszę was proszę dodać trochę więcej kontekst wokół odpowiedź. Tylko kody lub tylko linki są trudne do zrozumienia. Pomoże to pytającemu i przyszłym czytelnikom, jeśli dodasz więcej informacji do swojego postu. – RBT