我如何才能取一个大数的商

killvs 2004-06-11 11:43:55
我想取一个大数的商(整除), 如 9999999999999999\2 但这样vb提示 "溢出" ,我发现"9"的位数只能是9位超过就会溢出.请问我如何解决?
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2004-06-12
  • 打赏
  • 举报
回复
Function shang(ByVal x As String, ByVal y As Integer) As String
Dim a(), num As Long, temp As Long
x = String(5 - Len(x) Mod 5, "0") & x
num = Len(x) \ 5
ReDim a(num - 1)
For i = 0 To num - 1
a(i) = Val(Mid(x, i * 5 + 1, 5))
Next
temp = a(0) Mod y
a(0) = a(0) \ y
For i = 1 To num - 1
temp = temp * 10 ^ 5 + a(i)
a(i) = Format(temp \ y, "00000")
temp = temp Mod y
Next
shang = Join(a, "")
Erase a
Do While Left(shang, 1) = "0"
Mid(shang, 1, 1) = " "
shang = LTrim(shang)
Loop
End Function

Private Sub Command1_Click()
MsgBox shang(String(1000, "9"), 3333)
End Sub
aleixx 2004-06-12
  • 打赏
  • 举报
回复
可以把数设为double
然后再把结果取整!
northwolves 2004-06-12
  • 打赏
  • 举报
回复
模拟字符串运算
chenziteng 2004-06-12
  • 打赏
  • 举报
回复
安慰一下aleixx
killvs 2004-06-12
  • 打赏
  • 举报
回复
谢谢各位我自己摆平了
Private Sub Chu(shu As String, Optional shang As String, Optional yu As String) '取一个数除2的商和余
shang = ""
yu = ""
Dim a As Long, t As String, e As String
For a = 1 To Len(shu)
t = Mid(shu, a, 1)
e = e & t
shang = shang & e \ 2
If shang = "0" Then: shang = ""
If a = Len(shu) Then: yu = e Mod 2: Exit Sub:
e = e Mod 2
Next a
End Sub
BlueBeer 2004-06-12
  • 打赏
  • 举报
回复
哇,楼上的,偶像啊

上次跟你学了个整除2的,这段代码又要拿回去好好学习了,赚啦~ ^o^


'整除2
Function Div2(Num As String) As String
Dim i As Long: Num = "0" & Num
For i = 2 To Len(Num)
Div2 = Div2 & CStr(Val(Mid$(Num, i, 1)) \ 2 + IIf(Val(Mid$(Num, i - 1, 1)) Mod 2, 5, 0))
Next i
If Left$(Div2, 1) = "0" Then Div2 = Right$(Div2, Len(Div2) - 1)
End Function

Private Sub Form_Load()
Debug.Print Div2("9999999999999999")
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧