菜鸟+新手求助这段简单的代码为什么会溢出
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 , 基础类