Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 28.06.02 |
String-Addition zweier sehr großer Ganzzahlen Mit dieser Funktion lassen sich zwei sehr große Ganzzahlen addieren - ohne den lästigen Überlauf-Fehler zu erhalten. | ||
Autor: Bastian Kröger | Bewertung: | Views: 16.009 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Visual Basic und natürlich auch andere Programmiersprachen haben bekanntlich Probleme, wenn es darum geht, z.B. zwei sehr große Ganzzahlen zusammenzuzählen (addieren). Irgendwann ereilt uns nämlich dann die bekannte Fehlermeldung 6 - Überlauf.
Mit nachfolgender Funktion hingegen lassen sich Ganzzahlen beliebiger Größe (Länge) addieren - und zwar als Strings. Die Zahlen können demnach so groß sein, wie ein String Zeichen enthalten kann (also ziemlich groß .
' String-Addition zweier sehr großer Ganzzahlen Public Function ADDITION(ByVal sZahl1 As String, _ ByVal sZahl2 As String) As String ' Addition notwendig? If sZahl1 = "" Or sZahl2 = "" Then Exit Function ' Strings auf gleiche Länge bringen Dim nLen1 As Long Dim nLen2 As Long nLen1 = Len(sZahl1): nLen2 = Len(sZahl2) If nLen1 > nLen2 Then sZahl2 = String$(nLen1 - nLen2, "0") + sZahl2 ElseIf nLen2 > nLen1 Then sZahl1 = String$(nLen2 - nLen1, "0") + sZahl1 End If Dim nLen As Long Dim i As Long Dim z As Byte Dim x As String ' Maximale Länge nLen = Len(sZahl1) ' Strings addieren For i = 1 To nLen ADDITION = (CDec(Left$(Right$(sZahl1, i), 1)) + _ CDec(Left$(Right$(sZahl2, i), 1))) If (CDec(ADDITION)) >= 10 Then x = CStr(CDec(Right$(ADDITION, 1)) + z) & x z = 1 ElseIf (CDec(ADDITION) + z) = 10 Then x = "0" & x z = 1 ElseIf (CDec(ADDITION) + z) < 10 Then x = CStr(CDec(ADDITION) + z) & x z = 0 End If Next i ADDITION = IIf(z <> 0, CStr(z), "") & x End Function
Wie gesagt: Zu beachten ist, dass die beiden Zahlen als String vorliegen. Die Funktion selbst gibt das Ergebnis der Addition dann ebenfalls als String zurück.