Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB6 | 14.01.04 |
Round-Funktion in VB - optimiert (Part II) Eine verbesserte Round-Funktion, die einen Wert korrekt rundet - egal, ob Punkt oder Komma als Nachkomma-Trennzeichen angeben ist. | ||
Autor: Sebastian Wiebach | Bewertung: | Views: 14.224 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vor langer Zeit haben wir Ihnen eine verbesserte Round-Funktion für VB vorgestellt:
Richtiges Runden in VB
Dieser Code lässt sich aber noch optimieren, so dass eine zusätzliche Perormance-Steigerung von 2.5 bis 3 mal erreicht wird.
Hier der Code:
Public Function Round(nummer As String, _ Optional anzahl As Byte) Dim n As Long Dim n2 As Long Dim tmp As Variant ' Ist Nummer eine Zahl? If Not (IsNumeric(nummer)) Then Round = 0: Exit Function End If ' Ist Anzahl eine Zahl? If Not (IsNumeric(anzahl)) Then Round = 0: Exit Function End If ' Wenn "." (Punkt) dann n=46 If (InStr(1, nummer, ".") > 0) Then tmp = Split(nummer, ".") n = 46 ' Wenn "," (Komma) dann n=44 ElseIf (InStr(1, nummer, ",") > 0) Then tmp = Split(nummer, ",") n = 44 End If ' Wenn Anzahl = 0, Zahl vor dem Komma prüfen If (anzahl = 0) Then If Left$(tmp(1), 1) < 5 Then ' Wenn Zahl vor dem Komma kleiner 5, ' nicht runden! Round = tmp(0) Else ' Wenn Zahl größer 5, um eins erhöhen Round = tmp(0) + 1 End If Exit Function End If ' Stelle (Anzahl+1) nach dem Komma abfragen n2 = Mid$(tmp(1), anzahl + 1, 1) If (n2 > 4) Then Round = tmp(0) & Chr(n) & (Mid$(tmp(1), 1, anzahl) + 1) ElseIf (n2 < 5) Then Round = tmp(0) & Chr(n) & Mid$(tmp(1), 1, anzahl) End If End Function