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

时间:2009-06-17 22:48:28

标签: vb.net

我需要检查demical是0到49.99还是50到99.99或100到199.99或大于200.我试图用select case执行此操作,但我不确定语法。请帮忙!

9 个答案:

答案 0 :(得分:23)

    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

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

   Dim aa As Double = 1.499

这(下文)将进入案例1至1.49

   Dim aa As Double = 1.4

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

   Dim aa As Double = 1.78

其他方式: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

也许这也是:

    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

答案 1 :(得分:5)

 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

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

答案 2 :(得分:5)

我怀疑你是否已经将这个问题设定为准确地说出你的意思。你真的希望第一组包含只是 0到49.99吗?或者你真的是指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

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

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

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 :(得分:3)

AlbertEin正在研究某些事情,但要像VB.Net那样进行整数除法,你必须这样写:

Dim range as Integer
range = someInteger \ 50

注意向后分割符号。从那里你可以Select Case range

但实际上,jvanderh的答案大多表达了你想要做的事情,因为它允许在将来轻松添加不会破坏50的倍数的案例,并且不需要未来的维护者来跟踪数学或知道关于\ operator。

答案 4 :(得分:2)

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

答案 5 :(得分:1)

为什么不尝试if / then / else?它们是等价的,我不确定VBasic中的case语句是否可以处理非整数值。

答案 6 :(得分:1)

我就是这样做的,我使用#来明确说明值是“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

答案 7 :(得分:0)

select p.player_id,p.name,coalesce(sum(s.score),0)
from player p
left join stats s on p.player_id = s.player_id and s.year=2017
group by p.player_id,p.name

答案 8 :(得分:0)

我遇到了这个问题,但是这些回答仍然允许太多事情落入空白。

'In this example, a value of 49.991 - 49.999* will fall in the 99.99 category, where I expect it is intended for the 49.99 category
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

相反,最好颠倒顺序,以避免为了缩小差距而不必指定多余的小数位。

Select Case value
    Case Is >= 200
        Debug.WriteLine("fourth group")
    Case Is >= 100
        Debug.WriteLine("third group")
    Case Is >= 50
        '49.9999* will always fall in this group irrespective of number of decimal places
        Debug.WriteLine("second group")
    Case Else
        Debug.WriteLine("first group")
End Select

Select Case语句仅跟随第一个真实的情况,因此即使后续的情况也可能是正确的,如果被较早的情况捕获,它们也会被绕过。