string st_addnum1,st_addnum2,st_add1[],st_add2[],st_end
int st_temp1,i,j,p,st_temp2
st_temp1 = 0
st_end = ''
i = len(trim(sle_1.text))
j = len(trim(sle_2.text))
if i>=j then
st_addnum1 = trim(sle_1.text)
st_addnum2 = trim(sle_2.text)
else
st_addnum1 = trim(sle_2.text)
st_addnum2 = trim(sle_1.text)
end if
for p = j to i - 1
st_addnum2 = "0" + st_addnum2
next
i = len(st_addnum1)
for p = 1 to i
st_add1[p] = mid(st_addnum1,p,1)
st_add2[p] = mid(st_addnum2,p,1)
next
p = i
do
st_temp2 = integer(st_add1[p]) + integer(st_add2[p]) + st_temp1
if st_temp2>=10 then
st_temp1 = 1
st_temp2 = st_temp2 - 10
else
st_temp1 = 0
end if
st_end = string(st_temp2) + st_end
p = p - 1
loop until p = 0
if st_temp1 = 1 then
st_end = "1" + st_end
end if
messagebox('',st_end)
sle_3.text = st_end
以前用VB写的,没考虑效率,但可以用,速度应该还凑合
'加两个大整数sN1 + sN2
Public Function TowBigNumPlus(ByVal sN1 As String, ByVal sN2 As String) As String
Dim i As Long
Dim j As Long
Dim k As Long
'统一两个数字的长度
If Len(sN1) > Len(sN2) Then
sN2 = Right$(String(Len(sN1), "0") & sN2, Len(sN1))
Else
sN1 = Right$(String(Len(sN2), "0") & sN1, Len(sN2))
End If
'
j = 0
For i = Len(sN1) To 1 Step -1
k = CLng(Mid(sN1, i, 1)) + CLng(Mid(sN2, i, 1)) + j
j = 0
If k > 9 Then j = 1
TowBigNumPlus = Trim$(CStr(k Mod 10)) & TowBigNumPlus
Next
End Function