vb实时错误6 溢出 怎么解决

PrivateSubCommand4_Click()Dimn1AsInteger,n2AsIntegerDimWAsSingle,UtAsDouble,UtabsAsDo... Private Sub Command4_Click()
Dim n1 As Integer, n2 As Integer
Dim W As Single, Ut As Double, Utabs As Double 'Ut为跳跃性检验时的检验项
Dim j As Integer, k As Integer, temp As Single
Dim zhi(52) As Integer
For i = 0 To 51 '去除趋势项的数列
y(i) = a * i + b
x(i) = x(i) - y(i)
Next i
'对所有数排序,并求得相应的秩
For i = 0 To 51
zhi(i) = 1
For j = 0 To 51
If x(j) < x(i) Then
zhi(i) = zhi(i) + 1
End If
Next j
'Print zhi(i)
Next i
For i = 10 To 40
n1 = i + 1: n2 = 52 - n1
'求W
W = 0
If n1 < n2 Then
For k = 0 To n1 - 1
W = W + zhi(k)
Next k
Else
For k = i To 51
W = W + zhi(k)
Next k
End If
'检验跳跃性
Ut = (W - n1 * 53 / 2) / (Sqr(n1 * n2 * 53 / 12))
Print Ut
Utabs = Abs(Ut)
If uabs > 1.96 Then
Print MsgBox("有跳跃性", vbInformation, "跳跃性检验结果")
Text7.Text = n1
End If
Next i
End Sub
Ut = (W - n1 * 53 / 2) / (Sqr(n1 * n2 * 53 / 12))
循环的时候前面都可以,到i=19的时候就溢出了。。。
展开
 我来答
尘入蜓孟影食1038
2010-05-21 · TA获得超过3512个赞
知道大有可为答主
回答量:2307
采纳率:87%
帮助的人:1349万
展开全部
建议:

Dim n1 As Integer, n2 As Integer
改为
Dim n1 As Long, n2 As Integer
应该就可以了。

当然如果数据还要大的话,可以采取一点小措施:

Ut = (W - n1 * 53 / 2) / (Sqr(n1 * n2 * 53 / 12))
改为
Ut = (W - n1 / 2 * 53) / (Sqr(n1 / 12 * n2 * 53))
可以稍微扩大一点范围。
aciom
2010-05-21 · TA获得超过385个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:194万
展开全部
程序用数组了吧?是不是运行一段时间后弹出对话框“实时溢出”?
这个原因是由于数组定义的时候问题,定义的数组里面有的没有用到,多余的。
定义好继续编程时必须用得到多少定义多少,不能有空。
还说不明白的话 在线聊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lelandf
2010-05-21 · TA获得超过177个赞
知道答主
回答量:124
采纳率:0%
帮助的人:0
展开全部
在程序前加 on error resume next 试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喻元恺Va
2010-05-21 · TA获得超过905个赞
知道小有建树答主
回答量:4465
采纳率:0%
帮助的人:1821万
展开全部
这个多半都是你的哪个被除数为0了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式