Feedback

VB - Nachkommastellen einer Dezimalzahl extrahieren

Veröffentlicht von am 17.11.2011
(0 Bewertungen)
Dieses Snippet liefert die Nachkommastellen einer Double-Dezimalzahl. Damit keinesfalls durch mathematische Berechnungen Verfälschungen entstehen können, werden zur Auswertung String-Methoden verwendet. Das gültige Dezimal-Trennzeichen, welches von .NET bei der Umwandlung von Double nach String verwendet wird, wird den Culture-Einstellungen entnommen. Sind keine Nachkommastellen vorhanden (z.B. 3,0), so kommt ein leerer String.
    Public Function NachkommastellenString(ByVal Zahl As Double) As String
        Dim zahltext As String
        Dim zahltextRückwärts As String
        Dim position As Integer
        Dim nachkommateil As String
        Dim dezimaltrennzeichen As String
        '>>> gültiges Dezimaltrennzeichen holen, welches .NET gerade auch bei der Umwandlung von Double nach String in den String einsetzt  (kann auch ein String aus mehreren Zeichen sein)
        dezimaltrennzeichen = My.Application.Culture.NumberFormat.NumberDecimalSeparator.ToString
        '>>> Dezimalzahl in String umwandeln
        zahltext = Convert.ToString(Zahl)
        '>>> Zahlenstring umdrehen, so dass die Nachkommastellen vorne stehen
        zahltextRückwärts = StrReverse(zahltext)
        '>>> Dezimaltrennzeichen im Zahlenstring suchen, anzahl wird entsprechend durch die Fundstelle im String bestimmt, da die Fundstelle nullbasiert ist
        position = zahltextRückwärts.IndexOf(dezimaltrennzeichen)
        '>>> Sind Nachkommastellen vorhanden, so ist position größer 0
        If position > 0 Then
            nachkommateil = zahltext.Substring(zahltext.Length - position, position)
            Return nachkommateil
        Else
            Return ""
        End If
    End Function

1 Kommentare zum Snippet

Thomas Söhne schrieb am 20.01.2012:
Hi Eugen, du hättest mit zahltext.Split(dezimaltrennzeichen)[1] leichter an den String der Nachkommastellen kommen können, musst natürlich prüfen, ob du zwei hast.
Reverse() brauchst du eigentlich gar nicht!
 

Logge dich ein, um hier zu kommentieren!