2009-06-17 10 views
4

デミカルが0〜49.99,50〜99.99,100〜199.99、または200を超えるかどうかを確認する必要があります。これは選択したケースで実行しようとしていますが、構文の確認。助けてください!小数の範囲を確認するケースを選択する

+1

です:それは多くの意味がありますか?私は.99 – jvanderh

+0

小数点のためにおねがいします、ごめんなさい!!!!!!!! –

+0

49.99から50までの間にelse値を送信することに興味がありますか?私はあなたの質問に基づいて明確ではない。 – jvanderh

答えて

21
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 

(下)これは(下)これは(下)1

1.49から
Dim aa As Double = 1.4 

にケースにこれを行く場合1.5になります

Dim aa As Double = 1.499 

他のケースに行くだろう〜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 

、多分あまりにもこの:あなたの質問で49.992に入るような値を行う

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 
+0

1から2と言ったら、それには1と2が含まれていますか? –

+0

には1と2の間のものが含まれています – Fredou

+0

あなたの質問にさらに近いものについては、jvanderhの答えをご覧ください。 –

1

/then/elseを試してみませんか? VBasicのcase文が非整数値を扱えるかどうかは分かりません。

+0

if/then/elseはselect case文とは異なる方法でコンパイルできます。多くのコンパイラはselect case文を最適化します。 – user109878

+0

しかし、少なくとも古いBASIC言語とVisual Basicの場合、select..caseはそれよりもはるかに高速ですが、VB.NETのためにどのようになっているのか分かりません – schnaader

+0

ケースはif/elseif/elseif/elseのトンよりも速いです – Fredou

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 
+0

VB.Netはデフォルトで整数除算を行いません。 –

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 

?あなたは0-49.99、その後50-99.99と言いましたので、49.99と50の間に何がありますか?上記の私の例では、オプションの1つに含まれるので、0から49.99までの値、49.99から99.99までの値などです。

+0

私はそれを打ち負かす - これは私がまだ作っている間に現れた;) –

+0

あなたの答えは私のものよりも優れていると思うので、鉱山は受け入れられているとマークされているので、 – Fredou

+0

それが良いかどうかは、明確ではない質問の前提に依存します。 49.99と50の間の値を無視することが意図されている場合は、あなたは正しいです。あなたは鉱山をコピーして、それをオプションとしてオプションに追加することができます。 – jvanderh

3

AlbertEinは何かにありますが、VBのような整数除算を行います.Netの場合は、次のように書く必要があります。

Dim range as Integer 
range = someInteger \ 50 

後方区分記号に注意してください。そこからあなたはSelect Case rangeです。

しかし、本当にjvanderhの答えは、あなたがやりたいことを最もよく表しています。これは、将来的には50の倍数で壊れない数のケースを簡単に追加できるためです。 \演算子について知っている。

1

これは私がそれを行う方法です、私は明示的に値が "ダブル"のタイプであることを#を使用します。

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

私はあなたが '#'よりむしろ 'd'を意味すると思う。 –

4

私は、あなたがこの質問を正確に言ってくれるかどうか疑問に思っています。最初のグループにがちょうど 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は、ここでは直感に反するようである第2のグループに分類されます。カットオフ点として小数点以下2桁を選択することは任意です。

'< ='演算子はここに行く方法ではありません。 '<'演算子を使用します。それは整数またはフロート

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 
0
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 
+0

答えを得た方法を説明してください。 – Lakmi

関連する問題