我想求2^128但是必須要以10進位表示,不能出現科學符號,請問這樣的程式要怎麼寫?
2005-10-27 18:10:55 · 5 個解答 · 發問者 包哲豪 2 in 電腦與網際網路 ➔ 程式設計
答案是:340282366920938463463374607431768211456
程式如下:
Option Explicit
DefLng A-Z
Private Sub Command1_Click()
Dim 字$, 數
字 = "1"
For 數 = 1 To 128: 字 = 數字乘法$(字, "2"): Next
Text1 = 字
End Sub
Function 數字乘法$(被乘數字$, 乘數字$)
Dim 被乘位數, 乘位數, 結果數字$, 結果位數, 績, 數1, 數2
Dim 取被乘數字一字$, 取乘數字一字$
被乘位數 = Len(被乘數字): 乘位數 = Len(乘數字)
結果數字 = ""
For 數1 = 1 To 被乘位數
取被乘數字一字 = Mid(被乘數字, 數1, 1)
For 數2 = 1 To 乘位數
取乘數字一字 = Mid(乘數字, 數2, 1)
績 = Val(取被乘數字一字) * Val(取乘數字一字)
結果數字 = 數字加法$(結果數字, Str(績) + String(被乘位數 - 數1 + 乘位數 - 數2, "0"))
Next
Next
數字乘法 = 結果數字
End Function
Function 數字加法$(被加數字$, 加數字$)
Dim 被加位數, 加位數, 位數, 結果數字$, 結果位數, 和, 進位, 數
Dim 取被加數字一字$, 取加數字一字$
被加位數 = Len(被加數字): 加位數 = Len(加數字)
If 被加位數 > 加位數 Then 結果位數 = 被加位數 Else 結果位數 = 加位數
結果數字 = "": 進位 = 0
For 位數 = 1 To 結果位數 + 1
If 位數 <= 被加位數 Then
取被加數字一字 = Mid(被加數字, 被加位數 - 位數 + 1, 1)
Else
取被加數字一字 = " "
End If
If 位數 <= 加位數 Then
取加數字一字 = Mid(加數字, 加位數 - 位數 + 1, 1)
Else
取加數字一字 = " "
End If
和 = Val(取被加數字一字) + Val(取加數字一字) + 進位
進位 = 和 \ 10: 結果數字 = Right(Str(和), 1) + 結果數字
Next
For 數 = 1 To 結果位數 + 1
Select Case Mid(結果數字, 數, 1)
Case "1" To "9": 結果數字 = Mid(結果數字, 數): 數 = 結果位數
End Select
Next
If 結果數字 = "" Then 結果數字 = "0"
數字加法 = 結果數字
End Function
2005-11-01 18:10:22 · answer #1 · answered by ? 2 · 0⤊ 0⤋
to:W.J.S.
您所求得的答案好像並不是正確的答案
2005-10-29 11:18:33 · answer #2 · answered by 世賢 7 · 0⤊ 0⤋
拆解?怎麼作..閣下若有能力請幫忙解惑吧~
2005-10-29 08:53:16 · answer #3 · answered by 包哲豪 2 · 0⤊ 0⤋
MsgBox Format(2 ^ 128, "0")
2005-11-13 00:55:00 補充:
我沒有注意到這是極大數 *
2005-10-28 10:01:24 · answer #4 · answered by W.J.S. 7 · 0⤊ 0⤋
基本上你只要把他拆解掉就好了
沒什麼困難度的東西
2005-10-28 06:01:27 · answer #5 · answered by Anonymous · 0⤊ 0⤋