回 帖 发 新 帖 刷新版面

主题:我的计算器程序为什么不能输入两个以上的零?

做了个计算器程序,界面如图:
可为什么不能显示两个或者两个以上的零呀?比如:按0.01它最终显示为1[em10]
相关代码如下:(不是全部的代码,因为其他的按钮代码和显示数字0无关)
Dim shu1 As Single, shu2 As Single, suanfu As String '定义两个单精度数变量用于存放参与运算的数,一个字符型存放运算符
Dim neg As Boolean '用来标识刚才输入的是否为运算符
Dim dh  As Boolean '用来标识是否按了等号
Private Sub Form_Load()
  Text1.Text = ""
  dh = False
   shu1 = 0
   shu2 = 0
End Sub
Private Sub shuzi_Click(Index As Integer) '数字按钮:在文本框中显示数字
      Text1.Text = Val(Text1.Text & shuzi(Index).Caption) 
      neg = False '刚才输入的不是运算符
End Sub
Private Sub ysf_Click(Index As Integer) '运算符按钮,在文本框中显示运算符+、-、*、/
   If neg = False Then
      shu1 = Val(Text1.Text)   '将第一个操作数保存在shu1中
   End If
   suanfu = ysf(Index).Caption  '将运算符保存在suanfu中
   Text1.Text = ""
   neg = True '刚才输入的是运算符
End Sub
Private Sub xiaoshu_Click() '小数点按钮:在文本框中显示小数点
    Text1.Text = Text1.Text + "."
    If Left(Text1.Text, 1) = "." Then '第一位不能为小数
           Text1.Text = "0."
    End If
    If InStr(Text1.Text, ".") < Len(Text1.Text) Then '防止出现两个小数点
           Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
    End If
End Sub
Private Sub result_Click()   '等号,开始加减乘除的运算
   
  dh = True '按了等号按钮
    shu2 = Val(Text1.Text)  '当前文本框中的内容保存在shu2中,即是第二个操作数
   
   Select Case suanfu
      Case "+"
         Text1.Text = shu1 + shu2
      Case "-"
         Text1.Text = shu1 - shu2
      Case "*"
         Text1.Text = shu1 * shu2
      Case "/"
         If shu2 = 0 Then
                MsgBox "分母不能为零!", 0 + 48 + 0, "错误" '错误提示
                Text1.Text = ""
                Text1.SetFocus
        Else
                Text1.Text = shu1 / shu2
        End If
    End Select
 End Sub
请高手解答,谢谢!

回复列表 (共3个回复)

沙发

来分析一下你输入0.01的过程:
输入0, 结果val(0) = 0 
输入.,结果0 & . = 0.
输入0,结果 val(0.0) = 0 
输入1,结果 val("01") = 1

所以显示为1

问题在于
Private Sub shuzi_Click(Index As Integer) '数字按钮:在文本框中显示数字
     [color=red] Text1.Text = Val(Text1.Text & shuzi(Index).Caption) [/color]
      neg = False '刚才输入的不是运算符
End Sub

板凳

同意1楼的分析,去掉Text1.Text = Val(Text1.Text & shuzi(Index).Caption) 这一句的中val。

3 楼

猫猫感谢楼上达人~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册