Dieses Snippet liefert die Anzahl der 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.
Public Function NachkommastellenAnzahl(ByVal Zahl As Double) As Integer
Dim zahltext As String
Dim anzahl As Integer
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
zahltext = StrReverse(zahltext)
'>>> Dezimaltrennzeichen im Zahlenstring suchen, anzahl wird entsprechend durch die Fundstelle im String bestimmt, da die Fundstelle nullbasiert ist
anzahl = zahltext.IndexOf(dezimaltrennzeichen)
'>>> Wird das Dezimaltrennzeichen nicht gefunden (Ergebnis: -1), so ist die Anzahl = 0
If anzahl < 0 Then anzahl = 0
'>>> RÜCKGABE
Return anzahl
End Function
1 Kommentare zum Snippet