Addition de très grands nombres (plusieurs milliers de chiffres)

Contenu du snippet

Ce code ne travaille pas sur les types long, integer, double... mais sur les strings. La fonction "plus" a donc été recréée. On peut ainsi ajouter des nombres de plusieurs milliers de chiffres alors que visual basic dirait qu'il y a dépassement de capacité.

Source / Exemple :


Public Function PLUS(a As String, b As String) As String
Dim s_result As String
Dim s_max As String, s_min As String

    If Len(a) > Len(b) Then
        s_max = a
    ElseIf Len(a) < Len(b) Then
        s_max = b
    Else
        If CInt(Left$(a, 1)) > CInt(Left$(b, 1)) Then
            s_max = a
        Else
            s_max = b
        End If
    End If
    If s_max = a Then s_min = b Else s_min = a
    
Dim x As Double
Dim x_max As Double
Dim x_min As Double

Dim c_min As Integer
Dim c_max As Integer
Dim c_result As Integer
Dim retenue As Integer

    x = 0
    retenue = 0
    
debutalgo:
    x_max = Len(s_max) - x
    c_max = CInt(Mid$(s_max, x_max, 1))
    
    If Len(s_min) > x Then
        x_min = Len(s_min) - x
        c_min = CInt(Mid$(s_min, x_min, 1))
    Else
        c_min = 0
    End If
        
    c_result = c_min + c_max + retenue
    If c_result > 9 Then retenue = 1: c_result = CStr(c_result - 10) Else retenue = 0
    
    s_result = c_result & s_result
    
    x = x + 1
    If x < Len(s_max) Then GoTo debutalgo
    
    PLUS = IIf(retenue <> 0, retenue, "") & s_result
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.