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.
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

C# 2019/2017/2015 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

    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!