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!
Why don't you try if/then/else? They are equivalent, and I am not sure if case statement in VBasic can handle non-integers values.
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
this(below) would go into case else
Dim aa As Double = 1.499
this(below) will go into case 1 to 1.49
Dim aa As Double = 1.4
this(below) will go into case 1.5 to 2
Dim aa As Double = 1.78
other way of doing it: From here
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
and maybe this too:
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
Dim range as Integer
range = someInteger / 50
'So, if range = 0 is 0-49.99, if it's 1 it's 50 to 99.99, etc
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.
AlbertEin is onto something, but to do integer division like that in VB.Net you have to write it like this:
Dim range as Integer
range = someInteger \ 50
Notice the backwards division symbol. From there you can Select Case range.
But really, jvanderh's answer most expresses what you want to do, because it allows for easy addition of cases in the future that don't break on a multiple of 50 and don't require future maintainers to follow the math or know about the \ operator.
This is how I would do it, I use the # to explicitly state the values are of type "double".
Dim input As Double = 2.99
Select Case input
Case 0.0# To 49.99#
Response.Write("Between 0 to 49.99")
Case 50.0# To 99.99#
Response.Write("Between 50 and 99.99")
Case Else
Response.Write("The value did not fall into a range.")
End Select
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