选择案例以检查十进制数的范围

l--*_*''' 6 vb.net

我需要检查demical是0到49.99或50到99.99或100到199.99还是大于200.我试图用select case来做这个,但我不确定语法.请帮忙!

Fre*_*dou 24

    Select Case aa
        Case 1 To 1.49
            MsgBox(1)
        Case 1.5 To 2
            MsgBox(2)
        Case Else
            MsgBox("was lower than 1 or higher than 2 or between 1.49 and 1.5")
    End Select
Run Code Online (Sandbox Code Playgroud)

这(下面)将进入其他情况

   Dim aa As Double = 1.499
Run Code Online (Sandbox Code Playgroud)

这个(下面)将进入案例1到1.49

   Dim aa As Double = 1.4
Run Code Online (Sandbox Code Playgroud)

这(下面)将进入案例1.5至2

   Dim aa As Double = 1.78
Run Code Online (Sandbox Code Playgroud)

其他方式:从这里开始

    Select Case value
        Case Is <= 49.99
            Debug.WriteLine("first group")
        Case Is <= 99.99
            Debug.WriteLine("second group")
        Case Is <= 199.99
            Debug.WriteLine("third group")
        Case Else
            Debug.WriteLine("fourth group")
    End Select
Run Code Online (Sandbox Code Playgroud)

也许这也是:

    Select Case true
        Case (value >= 0 andalso value <= 49.99)
            Debug.WriteLine("first group")
        Case (value >= 50 andalso value <= 99.99)
            Debug.WriteLine("second group")
        Case (value >= 100 andalso value <= 199.99)
            Debug.WriteLine("third group")
        Case Else
            Debug.WriteLine("fourth group")
    End Select
Run Code Online (Sandbox Code Playgroud)


jva*_*erh 6

 Dim value As Double = 133.5
        Select Case value
            Case Is <= 49.99
                Debug.WriteLine("first group")
            Case Is <= 99.99
                Debug.WriteLine("second group")
            Case Is <= 199.99
                Debug.WriteLine("third group")
            Case Else
                Debug.WriteLine("fourth group")
        End Select
Run Code Online (Sandbox Code Playgroud)

您的问题中,49.992的值在哪里?因为你说的是​​49-99之间的0-49.99然后是50-99.99,它会去哪里?在上面的示例中,它将包含在其中一个选项中,因此它的值介于0到49.99之间,值介于49.99和99.99之间,等等.


Dan*_*Tao 6

我怀疑你是否已经把这个问题弄清楚了,说出你的意思.难道你真的想第一组包括刚刚通过49.99 0?或者你真的是指0但不包括50,你只是希望你的输入有2位小数或更少?如果你想把数字分组五十年代,那么写下来就很奇怪了:

Select Case value
    Case Is <= 49.99
        Debug.WriteLine("49.99 or less")
    Case Is <= 99.99
        Debug.WriteLine("greater than 49.99, 99.99 or less")
    ' ... and so on '
End Select
Run Code Online (Sandbox Code Playgroud)

这里的数字49.995属于第二组,这似乎违反直觉.选取两个小数位作为截止点是任意的.

'<='运算符不是这里的方式; 使用'<'运算符; 它更有意义:

Select Case value
    Case Is < 50
        Debug.WriteLine("less than fifty")
    Case Is < 100
        Debug.WriteLine("fifty or greater, less than 100")
    ' ... and so on '
End Select
Run Code Online (Sandbox Code Playgroud)