select case to check range of a decimal number

2020-02-07 01:46发布

i need to check whether a demical is 0 through 49.99 or 50 through 99.99 or 100 through 199.99 or greater than 200. i am trying to do this with select case, but i am not sure of the syntax. please help!

标签: vb.net
9条回答
混吃等死
2楼-- · 2020-02-07 02:45

I have my doubts that you've framed this question to say exactly what you mean. Do you really want the first group to encompass just 0 through 49.99? Or do you really mean 0 up to but not including 50, and you simply expect your input to have 2 decimal places or fewer? If you want to group numbers by fifties, say, then it is very strange to write:

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

The number 49.995 here falls into the second group, which seems counterintuitive. Picking two decimal places as the cut-off point is arbitrary.

The '<=' operator is not the way to go here; use the '<' operator; it makes a lot more sense:

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
查看更多
爱情/是我丢掉的垃圾
3楼-- · 2020-02-07 02:47
 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

Where do values as 49.992 fall in your question? Since you said 0-49.99 and then 50-99.99 anything between 49.99 and 50 where does it go? In my example above it would be included in one of the options so it is values between 0 and 49.99, values between 49.99 and 99.99, etc, etc.

查看更多
虎瘦雄心在
4楼-- · 2020-02-07 02:50
Structure employee
    Dim percent As Decimal
    Dim dayname As DayOfWeek
End Structure

Dim emp As employee

 emp.percent = CDec(45.5)
 emp.dayname = DayOfWeek.Friday

Select Case True

    Case (emp.percent >= 0 And emp.percent <= 49.99 
                   And emp.dayname = Now.DayOfWeek)

        MsgBox("Employee percentage   " & emp.percent 
                & "Name of the day  " & Now.DayOfWeek.ToString)

End Select
查看更多
登录 后发表回答