Valhalla Legends Forums Archive | Visual Basic Programming | BigNumber class

AuthorMessageTime
CupHead
Some quick class I whipped up while talking to Spht about how VB needs to be able to handle large numbers. Obviously not complete (no other operators and no comparisons), but a decent start if anyone wants to finish it.


[code]
' cBigNumber.cls

Option Explicit

Private byteArray(100) As Byte

Public Sub SetNumber(ByVal Number As String)
Call Clear

Dim i As Integer
For i = 1 To Len(Number)
byteArray(99 - Len(Number) + i) = Asc(Mid(Number, i, 1)) - Asc("0")
Next i
End Sub

Public Function GetNumber() As String
Dim i As Integer
For i = 0 To 99
GetNumber = GetNumber & Chr(byteArray(i) + Asc("0"))
Next i

While Left(GetNumber, 1) = "0"
GetNumber = Right(GetNumber, Len(GetNumber) - 1)
Wend
End Function

Public Function Add(ByVal NumberToAdd As String)
Dim i As Integer, TempArray(100) As Byte
Dim Result As Byte, Carry As Boolean

For i = 1 To Len(NumberToAdd)
TempArray(99 - Len(NumberToAdd) + i) = Asc(Mid(NumberToAdd, i, 1)) - Asc("0")
Next i

For i = 99 To 0 Step -1
Result = IIf(Carry, byteArray(i) + TempArray(i) + 1, byteArray(i) + TempArray(i))
Carry = False

If Result >= 10 Then
Carry = True
Result = Result Mod 10
End If

byteArray(i) = Result
Next i
End Function

Private Function Clear()
Dim i As Integer
For i = 0 To 99
byteArray(i) = 0
Next i
End Function
[/code]
December 13, 2003, 2:27 AM

Search