vb 关于商品折扣问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 14:33:12
下面是我设计的一个vb程序 代码如下 a表示在商场消费的金额 用inputbox输入到text1 里面,再把打折后的输入text2 里面,但是当a的值大于32767时,就出现错误了,提示实时错误6,溢出.. 难道是因为我定义的是Integer吗?我去了也好像不对,希望高手们能帮我解答,能给出正确的答案,我就是想在a输入的值不受到限制...不会出现错误6.

ps:也许我这个问题比较简单,我是初学者....

Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer

Private Sub Command1_Click()
If a >= 0 And a < 1000 Then
b = a
Text2 = b
Else
If a >= 1000 And a < 2000 Then
c = a * 0.9
Text2 = c
Else
If a >= 2000 And a < 3000 Then
d = a * 0.8
Text2 = d
Else
If a >= 3000 Then
e = a * 0.7
Text2 = e
Else
End If
End If
End If
End If
End Sub

Private Sub Text1_Click()
Strs1 = "请输入你已消费的金额" + Chr(13) + Chr(10) + "然后单击确定"
a = InputBox(Strs1, "输入购物金额", , 100, 100)
Text1 = a
End Sub

的确是因为你定义的是Integer的原因。
而且你所使用的是VB的6.0版本的吧,6.0是98年的,现在最新的是2008版的,要是在2005或是2008版的里面就不会出现这样的问题。因为——
在6.0里面integer类型的变量占2个字节。所以这种变量所能够存储的最小值是-32768,最大值是+32767,你输入大于32767的数当然会溢出了。解决的方法是把integer改为long类型的就可以了,long和integer基本是一样的,区别在于integer只占二个字节,而long占四个字节,所以long所能够存储的数字的范围能够达到正负21亿多。
而在2005以上的版本中,integer和long完全一样,都是占四个字节。

把a,b,c,d都定义成货币型数值 As Currency