注册 登录
编程论坛 VB6论坛

变量判断问题

建生65 发布于 2018-07-04 16:40, 1511 次点击
    MsgBox Xsurface(q): MsgBox Xsurface(q + 1)
    MsgBox Xr
    If (Xr >= Xsurface(q) And Xr <= Xsurface(q + 1)) Then
        msgbox "1"
    else
        msgbox "0"
    end if
    前面输出的变量值分别为:-2.235;-1.55;-2.235
    运行程序输出的结果是0,即程序认为if的条件为假;

    为查找错误,新建了一个vb如下:
    Private Sub Form_Load()
        Dim a, b, c As Double
        a = -2.235: b = -2.235: c = -1.55
        If (b >= a And b <= c) Then
            Text1.Text = 1
        Else
            Text1.Text = 0
        End If
    End Sub
    新建的这个text1.text为1,即程序认为if条件为真;有老哥遇到过相同的情况吗?望不吝赐教,谢谢
3 回复
#2
wufuzhang2018-07-04 19:58
你的Xsurface()数组或者Xr参数不是数值类型,所以比较后为False
改正:If (Val(Xr) >= Val(Xsurface(q)) And Val(Xr) <= Val(Xsurface(q + 1))) 就OK了
#3
ZHRXJR2018-07-05 14:40
没有看到你定义的 Xr 变量的数据类型, Xsurface() 数组的数据类型,如果 Xr 变量的数据类型是数字, Xsurface() 数组的数据类型也是数字,那么就不应该出错,判断应该是正确的。
你说的:前面输出的变量值分别为:-2.235;-1.55;-2.235,到底哪一个是多少就不知道了(因为无法知道它们的前后顺序),因此你的判断是否是值的问题,从而出现假?
比如:Xr = -2.235, Xsurface(q) = -1.55, Xsurface(q+1) = -2.235,那么判断是 If (-2.235 >= -1.55 And -2.235 <= -2.235) Then ,-1.55肯定大于-2.235,肯定是假的咯!
#4
风吹过b2018-07-05 16:54
Dim a, b, c As Double

这里有问题。

VB必须显式说明每个变量的类型,VB不支持 C那种一次写多个变量,后面跟一个 变量类型的说明。
所以上面定义后,
a 和 b 的数据类型是:Variant
c 的数据类型是 Double

然后给值
a="1"
b=1
if a=b then msgbox "1" else msgbox "2"

显示的结果是 2

-----------------
我赞同2楼的观点

1