我的vb计算器代码

来源:百度知道 编辑:UC知道 时间:2024/05/08 16:24:01
Private Sub Command1_Click()
a = Text1.Text
b = Text2.Text
Text3.Text = a + b
End Sub

Private Sub Command2_Click()
a = Text1.Text
b = Text2.Text
Text3.Text = a - b
End Sub

Private Sub Command3_Click()
a = Text1.Text
b = Text2.Text
Text3.Text = a * b
End Sub

Private Sub Command4_Click()
a = Text1.Text
b = Text2.Text
Text3.Text = a / b
End Sub

Private Sub Command6_Click()
End
End Sub

我是刚刚学vb的,这是我的计算器代码,虽然笨了点,但是我现在也只会这么做了,我想问的是,我写的这个代码,”-、*、/“都可以计算出来,而且也正确,但是为什么”+“计算不出来呢?例如我输入“1+5”,计算出的结果并不是“6”,而是“15”,类似“5+6”,结果是“56”,这是为什么呢?我哪里出错了呢?
哪为知道就请给我说一下吧,谢谢了

先分析原因,在vb种,+号的作用不仅仅有时两个数相加的功能,它还有连接两个字符串的功能。你没有声明过a,b两个变量,那么系统默认为varient变体,恰好text中的内容默认为string类型,所以a,b成为了字符串。
解决方法:1.像一楼那位,text3.text=cint(a)+cint(b)
但这样的话,a,b只能是整数,可以用clng(长整型)csng(单精度型,可以为小数)cdbl(双精度型)
2.但希望你能够养成声明变量的习惯
dim a as (integer/single/long/double)(括号里的自己选择)

改成这样
Text3.Text = Val(Text1.Text) + Val(Text2.Text)
因为text1.text和text2.text都是string型
+其实就成了连接符了
所以要强制类型转换

你没设置类型,按默认是个变体,Text3.Text = a + b
是STRING的,可加强制转换Text3.Text =cint( a )+cint( b)

问题的原因是楼主没有声明变量的习惯,如果不加声明,变量默认为变体型,上题中的程序如果声明变量为Long型,则计算的时候VB就会对变量的值进行自动转换,从而避免了以上问题.
如果要强制声明变量,可以在程序的前面加上Option Explicit

因为计算器本身要计算的并非某一种指定类型的变量,也没必要指定精度,所以在此不必声明,但可以都加上强制类型转换
Text3.Text = Val(Text1.Text) + Val(Text2.Text)

Text3.Text = a + b
改一下
text3.text=val(a)+val(b)