注册 登录
编程论坛 VB6论坛

请教 溢出错误 应该怎么改 纯小白

sclx88 发布于 2016-08-01 12:54, 1429 次点击
Private Sub Command1_Click()
Text4 = a / b
Text5 = Sin(Val(Text1.Text) * pi / 180)
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Dim a As Double
Dim b As Double
a = Sqr(Val(Text1.Text))
b = Val(Text2.Text) + Val(Text3.Text)
End Sub

来人教教阿,别光看不理我阿~~~
还有那个text5为什么老显示0

[此贴子已经被作者于2016-8-1 15:16编辑过]

7 回复
#2
xiangyue05102016-08-01 15:21
pi 应该是为0的,你可以加中断看一下。VB中没有这个默认的变量或者函数
改成这样试试
程序代码:
Private Sub Command1_Click()
Text4 = a / b
pi=3.1415926
Text5 = Sin(Val(Text1.Text) * pi / 180)
End Sub
#3
xiangyue05102016-08-01 15:22
更准确的话可以换成 pi=4 * atn(1)
#4
sclx882016-08-01 15:55
回复 3楼 xiangyue0510
谢谢,这个text5正常了,text4这个运算不了是啥原因呢
#5
xiangyue05102016-08-01 16:21
以下是引用sclx88在2016-8-1 15:55:57的发言:

谢谢,这个text5正常了,text4这个运算不了是啥原因呢

Text4 = a / b从这句来看,也是一样。 没有看到a、b的赋值语句。除非你是全局变量其他地方赋值,没有把代码贴上来的,否则就是0/0
#6
syx542016-08-02 11:05
分析:
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Dim a As Double
Dim b As Double
a = Sqr(Val(Text1.Text))
b = Val(Text2.Text) + Val(Text3.Text)
那么:Text1.Text,Text2.Text,Text3.Text,转换成数值,都为0
a / b,那就是 0 / 0 ,数学上的概念分母不可以0
#7
pengzhanggui2016-08-02 21:22
debug一下不就得了
#8
ZHRXJR2016-08-06 12:29
第一个问题:
程序代码:
Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Dim a As Double   '你定义的的是过程级变量
Dim b As Double   '你定义的的是过程级变量
a = Sqr(Val(Text1.Text))   '前面 Text1.Text = ""了。那么a的值应该是0
b = Val(Text2.Text) + Val(Text3.Text)   '前面 Text2.Text = ""、Text3.Text = ""了。那么b的值应该是0
End Sub

第二个问题:
Private Sub Command1_Click()
Text4 = a / b    '变量a、b无值,不存在!
Text5 = Sin(Val(Text1.Text) * pi / 180)   '变量pi=0,因此,Text5。Text=0
End Sub

修改代码:
程序代码:
Dim a As Double   '必须定义为模块级变量
Dim b As Double   '必须定义为模块级变量
Dim pi As Single    '定义pi变量

Private Sub Command1_Click()
pi = 3.1415926
If Val(Text1.Text) < 0 Then   '判断Text1的值
    MsgBox "Text1的值必须大于0"
    Exit Sub
End If
If Val(Text2.Text) = 0 Then   '判断Text2的值
    MsgBox "Text2的值必须不能等于0"
    Exit Sub
End If
If Val(Text3.Text) = 0 Then   '判断Text3的值
    MsgBox "Text3的值必须不能等于0"
    Exit Sub
End If
'经过上面的判断,下面运算才不会出错!
a = Sqr(Val(Text1.Text))   '在这里赋值
b = Val(Text2.Text) + Val(Text3.Text)   '在这里赋值
Text4 = a / b    '这样a、b才会有值
Text5 = Sin(Val(Text1.Text) * pi / 180)   '变量pi=0,因此,Text5。Text=0
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
1