handlelargenumbers.bas

来自「几个不错的VB例子」· BAS 代码 · 共 115 行

BAS
115
字号
Attribute VB_Name = "HandleLargeNumbers"

Public Function MultiplyLargeNumbers(ByVal Number As String, ByVal Multiple As String) As String
Dim I As Double
Dim B As Double
Dim P As Double
Dim AddOn As Byte
Dim Num1 As Byte
Dim Num2 As Byte
Dim Product As Byte
Dim FinalResult As Byte
Dim NumberHolder As String
Dim ProductHolder As String
If Number = "0" Or Multiple = "0" Then
MultiplyLargeNumbers = "0"
Exit Function
End If
If Len(Number) < 1 Then
MultiplyLargeNumbers = "Invalid Length (Number)"
Exit Function
End If
If Len(Multiple) < 1 Then
MultiplyLargeNumbers = "Invalid Length (Multiple)"
Exit Function
End If
NumberHolder = ""
ProductHolder = "0"
For B = Len(Multiple) To 1 Step -1
Num1 = Val(Mid(Multiple, B, 1))
AddOn = 0
For I = Len(Number) To 1 Step -1
Num2 = Val(Mid(Number, I, 1))
AddOn = Num1 * Num2 + AddOn
Product = AddOn Mod 10
AddOn = (AddOn - Product) / 10
FinalResult = Product
NumberHolder = Format(FinalResult, "0") & NumberHolder
Next I
If AddOn > 0 Then
NumberHolder = Format(AddOn, "0") & NumberHolder
End If
If B < Len(Multiple) Then
For P = Len(Multiple) To B + 1 Step -1
NumberHolder = NumberHolder & "0"
Next P
End If
ProductHolder = AddLargeNumbers(NumberHolder, ProductHolder)
NumberHolder = ""
Next B
MultiplyLargeNumbers = ProductHolder
End Function

Public Function AddLargeNumbers(ByVal Number As String, ByVal NumberAdd As String) As String
Dim I As Double
Dim AddOn As Byte
Dim Num1 As Byte
Dim Num2 As Byte
Dim Product As Byte
Dim FinalResult As Byte
Dim NumberHolder As String
Dim ForAmount As Double
If Len(Number) < 1 Then
AddLargeNumbers = "Invalid Length (Number)"
Exit Function
End If
If Len(NumberAdd) < 1 Then
AddLargeNumbers = "Invalid Length (NumberAdd)"
Exit Function
End If
If Len(NumberAdd) > Len(Number) Then
Do
Number = "0" & Number
Loop Until Len(Number) = Len(NumberAdd)
ForAmount = Len(NumberAdd)
ElseIf Len(NumberAdd) < Len(Number) Then
Do
NumberAdd = "0" & NumberAdd
Loop Until Len(NumberAdd) = Len(Number)
ForAmount = Len(NumberAdd)
Else
ForAmount = Len(NumberAdd)
End If
AddOn = 0
For I = ForAmount To 1 Step -1
Num1 = Val(Mid(Number, I, 1))
Num2 = Val(Mid(NumberAdd, I, 1))
AddOn = Num1 + Num2 + AddOn
Product = AddOn Mod 10
AddOn = (AddOn - Product) / 10
FinalResult = Product
NumberHolder = Format(FinalResult, "0") & NumberHolder
Next I
If AddOn > 0 Then
NumberHolder = Format(AddOn, "0") & NumberHolder
End If
AddLargeNumbers = NumberHolder
End Function

Public Function PowerLargeNumbers(ByVal Number As String, ByVal Power As String)
Dim Str As String
Str = Number
If Power = "0" Then
Str = "1"
GoTo SKIPFORLOOP
End If
If Power = "1" Then
GoTo SKIPFORLOOP
End If
For I = 2 To Power
Str = MultiplyLargeNumbers(Str, Number)
Next I
SKIPFORLOOP:
PowerLargeNumbers = Str
End Function

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?