摘要:[Visual Basic 6.0] 大整數運算 大數減法 (使用 Array 字串)
[Visual Basic 6.0] 大整數運算 大數減法 (使用 Array 字串)
大數的四則運算中,乘法與除法比較麻煩,尤其是除法!但加法與減法就容易多了!
它需要考慮的比較少,我的習慣作法都會先將需要運算的兩數變成相同位數,再放到陣列裡面去做處理。
這樣一來運算也變得更像日常生活中的直式運算。只要遇到大數問題,最好的方法是從加與減下手,乘法除法也是如此!
'# [Visual Basic 6.0] 大整數運算 大數減法 (使用 Array 字串)
'# 0xDe
Private Sub Command1_Click()
Text3 = ""
NowA = Text1
NowB = Text2
' 將兩者皆補成同為數
Do Until Len(NowA) = Len(NowB)
NowB = "0" & NowB
Loop
ReDim TxA(1 To Len(NowA))
ReDim TxB(1 To Len(NowB))
For I = 1 To Len(NowA)
TxA(I) = Mid(NowA, I, 1)
TxB(I) = Mid(NowB, I, 1)
Next I
For I = Len(NowA) To 1 Step -1
If Val(TxB(I)) > Val(TxA(I)) Then ' 當不足時需要跟前面借位
X = I ' 紀錄目前位置
Do Until Val(TxA(X)) <> 0
X = X - 1
Loop
TxA(X) = Val(TxA(X)) - 1
For J = (X + 1) To I - 1
TxA(J) = Val(TxA(J)) + 9
Next J
TxA(I) = Val(TxA(I)) + 10
End If
TxA(I) = Val(TxA(I)) - Val(TxB(I))
Text3 = TxA(I) & Text3
Next I
Do Until Val(Mid(Text3, 1, 1)) <> 0 Or Len(Text3) = 1
Text3 = Mid(Text3, 2)
Loop
End Sub
#0xDe 從分享中學習
#Facebook:ProgrammerDe (https://www.facebook.com/MicrosoftDes) 有問題歡迎提問