2013-09-24 25 views
6

整数が整数であるか小数点であるかを知る必要があります。したがって、13は整数で、23.23は小数です。VB2010数値が整数であるかどうかを調べるには

そう;

If 13 is a whole number then 
msgbox("It's a whole number, with no decimals!") 
else 
msgbox("It has a decimal.") 
end if 
+0

、それは文字列のあなたの数を含むように使用している変数では何種類?。 –

答えて

7

数字の床と天井が同じかどうかを確認できます。等しければ整数であり、そうでなければ異なる。

If Math.Floor(value) = Math.Ceiling(value) Then 
... 
Else 
... 
End If 
4

あなたはそれが整数または私は数が文字列に含まれていると仮定しています別のタイプであるか否かを判断する必要がされている1つのタイプを持っているという事実から判断します。その場合は、Integer.TryParseメソッドを使用して値がIntegerであるかどうかを判断し、成功した場合はIntegerとして出力します。これがあなたがやっていることでない場合は、質問を更なる情報で更新してください。

Dim number As String = 34.68 
Dim output As Integer 
If (Integer.TryParse(number, output)) Then 
    MsgBox("is an integer") 
Else 
    MsgBox("is not an integer") 
End If 

編集:

あなたの数、nはこのような何かを含むように小数点または別のタイプを使用している場合は、同じ考えを使用することができます。

Option Strict On 
Module Module1 

    Sub Main() 

     Dim number As Decimal = 34 
     If IsInteger(number) Then 
      MsgBox("is an integer") 
     Else 
      MsgBox("is not an integer") 
     End If 
     If IsInteger("34.62") Then 
      MsgBox("is an integer") 
     Else 
      MsgBox("is not an integer") 
     End If 

    End Sub 

    Public Function IsInteger(value As Object) As Boolean 
     Dim output As Integer ' I am not using this by intent it is needed by the TryParse Method 
     If (Integer.TryParse(value.ToString(), output)) Then 
      Return True 
     Else 
      Return False 
     End If 
    End Function 
End Module 
+0

申し訳ありませんが、元の投稿を更新しました。入力は常に整数になりますが、整数か小数点があるかどうかを調べる必要があります。 – user2691270

+2

@ user2691270 [整数](http://www.techterms.com/definition/integer)は、小数点を持つことはできません。小数点以下の桁数は、Decimal、Double、String、Singleのいずれかです。この番号はどこから生成されますか、テキストボックスの場合はおそらく文字列です。 –

+2

@MarkHall:結果に興味がないなら、TryParseの "ヘルパー"変数は必要ありません。定数(0、-1、42など)、または「無」(整数の場合はデフォルトでは0)を渡すことができます。 サイドノートとして:OPは "整数"しか指定していないので、BigInteger.TryParseを使うことをお勧めします。 – igrimpe

17
If x = Int(x) Then 
    'x is an Integer!' 
Else 
    'x is not an Integer!' 
End If 
+0

甘くてシンプル。 – Wakka02

+0

xが文字列の場合はどうなりますか?すなわち「2」、「2.2」、「3.14」?それとももっと良いですが、xが21億を超えるとどうなりますか?整数(つまりテーブルID)は、Int(21億)に格納できる最大値を超えることができます。 – user3541092

+0

私は厳密なタイピングを仮定しました。変数が大きすぎる場合は、オーバーフロー例外が発生します。 – SSS

0
 
Dim Num As String = "54.54" 
If Num.Contains(".") Then MsgBox("Decimal") 
'Do Something 
+2

いくつかの精緻化と説明は、この回答の質を向上させるでしょう。 –

+0

番号(文字列として)が正しくフォーマットされているかどうかを確認する唯一の答えです。他の答えは1.00と同じで、これは間違っています。 –

1

私はあなたの初期値が文字列であると仮定しています。

まず、文字列値が数値かどうかを確認します。
、数字の床と天井を比較してください。それが同じなら、あなたは整数を持っています。

私は拡張メソッドを使用することをお勧めします。

''' <summary> 
''' Is Numeric 
''' </summary> 
''' <param name="p_string"></param> 
''' <returns></returns> 
''' <remarks></remarks> 
<Extension()> 
Public Function IsNumeric(ByVal p_string As String) As Boolean 
    If Decimal.TryParse(p_string, Nothing) Then Return True 
    Return False 
End Function 

''' <summary> 
''' Is Integer 
''' </summary> 
''' <param name="p_stringValue"></param> 
''' <returns></returns> 
<Extension()> 
Public Function IsInteger(p_stringValue As String) As Boolean 
    If Not IsNumeric(p_stringValue) Then Return False 
    If Math.Floor(CDec(p_stringValue)) = Math.Ceiling(CDec(p_stringValue)) Then Return True 
    Return False 
End Function 

Dim _myStringValue As String = "200" 
    If _myStringValue.IsInteger Then 
     'Is an integer 
    Else 
     'Not an integer 
    End If 
関連する問題