当前位置:编程学习 > VB >>

菜鸟+新手求助这段简单的代码为什么会溢出

Private Sub Command1_Click()
Dim L As Double
Dim r As Double
Dim r1 As Double
Dim x1 As Double
Dim y1 As Double
Dim k As Double
Dim x As Double
Dim y As Double
r = Val(Text1.Text)
r1 = Val(Text2.Text)
L = Val(Text3.Text)
x = Val(Text4.Text)
y = Val(Text5.Text)
k = Val(Text6.Text)
x = L / 2 + r * Cos(k + (Atn(y1 / x1)) * 180 / pi)
y = Sqr(r1 * r1 - L * L / 4) + r * Sin(k + (Atn(y1 / x1)) * 180 / pi)
PSet (x, y)
End Sub --------------------编程问答-------------------- 那位大神来看看啊 如果该应该怎么改 --------------------编程问答-------------------- 这样试试:
r =cdbl(Text1.Text)
r1 =cdbl(Text2.Text)
L =cdbl(Text3.Text)
x =cdbl(Text4.Text)
y =cdbl(Text5.Text)
k =cdbl(Text6.Text)
--------------------编程问答-------------------- 不行啊  还是溢出 --------------------编程问答-------------------- 快来人啊   --------------------编程问答-------------------- Private Sub Command1_Click()
Dim L As Double
Dim r As Double
Dim r1 As Double
Dim x1 As Double
Dim y1 As Double
Dim k As Double
Dim x As Double
Dim y As Double
r = Val(Text1.Text)
r1 = Val(Text2.Text)
L = Val(Text3.Text)
x1 = Val(Text4.Text)
y1 = Val(Text5.Text)
k = Val(Text6.Text)
x = L / 2 + r * Cos(k + (Atn(y1 / x1)) * 180 / pi)
y = Sqr(r1 * r1 - L * L / 4) + r * Sin(k + (Atn(y1 / x1)) * 180 / pi)
PSet (x, y)
End Sub

我感觉是红色两行,因为你没有为x1赋值,则x1分母为零而溢出,况且x、y不改成x1、y1,x和y的赋值语句就没用了,不知我说的对不对。

还有个地方是Sqr(r1 * r1 - L * L / 4),具体你得调试一下,看看是不是负数开平方而溢出,如果是,那就是输入的问题了。 --------------------编程问答-------------------- 在哪一行提示溢出?
pset(x,y) 这一行?
如果是,是因为pset()的参数为single类型的,还是很有可能溢出的 --------------------编程问答-------------------- 运行以下程序,观察结果,希望你能看出点什么:

Private Sub Command1_Click()
 Dim x As Long
 x = 0 / 0
End Sub

--------------------编程问答-------------------- 建议拆分长算式,避免由于类型隐计算带来的溢出错误。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,