我需要检查是否从0到49.99或50到99.99或100到199.99或大于200.我试图用select case来做到这一点,但我不是确定的语法。请帮忙!select case来检查十进制数的范围
回答
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
为什么不试试if/then/else?它们是等价的,我不确定VBasic中的case语句是否可以处理非整数值。
if/then/else可以与select case语句不同地进行编译。许多编译器优化了select case语句。 – user109878 2009-06-17 22:53:05
但至少对于旧的BASIC语言和Visual Basic来说,select ..case比if要快得多,不知道它是如何用于VB.NET的。 – schnaader 2009-06-17 22:53:26
case比if/elseif/elseif/else – Fredou 2009-06-17 22:59:11
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
哪里值49.992坠入你的问题?既然你说的是0-49.99,然后是50-99.99,那么49.99到50之间的任何东西都去哪里?在我上面的例子中,它将包含在其中一个选项中,因此它的值在0到49.99之间,数值在49.99到99.99之间等等等等。
AlbertEin是一些东西,但要做像VB那样的整数分割.Net你必须这样写:
Dim range as Integer
range = someInteger \ 50
注意向后的除法符号。从那里你可以Select Case range
。
但是真的,jvanderh的回答最能表达你想要做什么,因为它允许在未来不会打破50的倍数并且不需要将来的维护者遵循数学或了解\运营商。
这就是我要做的事情,我使用#来显式声明值为“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
我有这样的疑问,你已经构思了这个问题,以确切地说出你的意思。你真的想要第一组包括只是 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这里属于第二组,这似乎有悖常理。选取两位小数作为截止点是任意的。
'< ='运算符不是去这里的路;使用'<'操作符;这让很多更有意义:
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
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
- 1. 十进制范围
- 2. 检查一个十进制数是否在一个范围内
- 3. 检查参数int是否在十六进制范围内?
- 4. 十进制离子范围?
- 5. 十进制范围in
- 6. 在C +/C++中查找十六进制范围内的十六进制数字
- 7. 来自sql select的十六进制值
- 8. 签名十六进制值范围
- 9. 十六进制颜色范围[java]
- 10. Case-Else for SQL中的十进制值
- 11. 检查十进制和数量
- 12. 检查十进制有效数字
- 13. 比较在javascript中使用十六进制或十进制的颜色范围
- 14. 检查VBScript中的十六进制值
- 15. 如何遍历bash中的十进制数范围?
- 16. 如何比较xCode中浮点十进制数的范围?
- 17. 保留一个范围内的十进制数
- 18. c#正则表达式的数字范围十进制
- 19. 不能SELECT十进制值
- 20. sed的检查十六进制语法
- 21. REGEXP_SUBSTR Oracle 11g和Oracle 12c中的十六进制范围
- 22. 复制的范围和重复检查
- 23. SQL查询检查范围
- 24. 查找十进制数
- 25. 检查范围只
- 26. 检查范围内
- 27. 检查JavaScript值是否为十进制
- 28. JSP检查值是十进制
- 29. 如何使用范围检查开关case语句
- 30. 如果负十进制值的语句范围为
它是整数或浮点数?请问因为.99 – jvanderh 2009-06-17 22:50:20
小数,对不起!!!!!!!! – 2009-06-17 22:50:59
你有兴趣发送49.99到50之间的其他值吗?根据你的问题,我不清楚。 – jvanderh 2009-06-17 23:04:11