VB简单的乘法问题 高分!

csdnboynew 2004-04-23 10:03:46
请问我用乘法text1=2*3*4*5*6*7*7为何提示溢出?
而用text1=2*3*4*5*6*6就可以显示出30240 ?
...全文
100 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Epson2004 2004-04-23
  • 打赏
  • 举报
回复
text1为integer类型, 其integer类型变量存储应为16位(2 个字节)
的数值形式,范围为 -32,768 到 32,767 之间。所以
text1=2*3*4*5*6*6就可以显示出30240, 而text1=2*3*4*5*6*7*7就当
然溢出了.
valley74 2004-04-23
  • 打赏
  • 举报
回复

虽然已经结贴,可学到了东西,还是谢谢 flyingscv(zlj) 和 epson2004 两位。
老吹老吹 2004-04-23
  • 打赏
  • 举报
回复
想不溢出方法也是有的。
你定义两个数组长度随便10位也行。20位也行。
把答案也定义成数组。
嘿,懂我的意思了吧??
这样子就算是天文数字也不会溢出了。。
ryuginka 2004-04-23
  • 打赏
  • 举报
回复
或者 是double
ryuginka 2004-04-23
  • 打赏
  • 举报
回复
数据类型啊,定义成long吧
cslf 2004-04-23
  • 打赏
  • 举报
回复
溢出就是溢出,重新选择合适的数据类型。
饮水需思源 2004-04-23
  • 打赏
  • 举报
回复
dim text1 as double
text1=2*3*4*5*6*7*7
gigilee 2004-04-23
  • 打赏
  • 举报
回复
text1一定用了Integer型
yinweihong 2004-04-23
  • 打赏
  • 举报
回复
你是定义为integer型吧,long,float,double弄大点就OK了
孤翱 2004-04-23
  • 打赏
  • 举报
回复
看看你的text1是什么类型的
很明显的Integer是不行的!用Long吧
pigpag 2004-04-23
  • 打赏
  • 举报
回复
text1.Text = CStr(2& * 3 * 4 * 5 * 6 * 7 * 7)
csdnboynew 2004-04-23
  • 打赏
  • 举报
回复
谢谢各位
northwolves 2004-04-23
  • 打赏
  • 举报
回复
用字符串类型:

Private Sub Command1_Click()
Dim a(1 To 100) As String, result As String, i As Long
result = 1
For i = 1 To 100
a(i) = i
result = multi(result, a(i))
Next
MsgBox result
End Sub
Function multi(ByVal X As String, ByVal Y As String) As String 'multi of two huge hexnum(两个大数之积)
Dim result As Variant
Dim xl As Long, yl As Long, temp As Long, i As Long
xl = Len(Trim(X))
yl = Len(Trim(Y))

ReDim result(1 To xl + yl)
For i = 1 To xl
For temp = 1 To yl
result(i + temp) = result(i + temp) + Val(Mid(X, i, 1)) * Val(Mid(Y, temp, 1))
Next
Next

For i = xl + yl To 2 Step -1
temp = result(i) \ 10
result(i) = result(i) Mod 10
result(i - 1) = result(i - 1) + temp
Next

If result(1) = "0" Then result(1) = ""
multi = Join(result, "")
Erase result

End Function

Epson2004 2004-04-23
  • 打赏
  • 举报
回复
问题可能是出在这儿了:
text1 = 2 * 3 * 4 * 5 * 6 * 7 * 7
赋值右边 2 * 3 * 4 * 5 * 6 * 7 * 7 的写法有问题
由它们都是正整数,系统认为是integer类型, 超出了范围.
而其中任一个数改为带小数点的数据(如7写为7.0)就不会
溢出了。

ColdMooon 2004-04-23
  • 打赏
  • 举报
回复
同意楼上。
flyingscv 2004-04-23
  • 打赏
  • 举报
回复
text1 = 2& * 3 * 4 * 5 * 6 * 7 * 7
valley74 2004-04-23
  • 打赏
  • 举报
回复
Dim text1 As Long

text1 = 2 * 3 * 4
text1 = text1 * 5 * 6 * 7 * 7
csdnboynew 2004-04-23
  • 打赏
  • 举报
回复
我这样还是溢出

Private Sub Form_Load()
Dim text1 As Double
text1 = 2 * 3 * 4 * 5 * 6 * 7 * 7
End Sub

7,763

社区成员

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

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