it-swarm-eu.dev

VB2010 Feststellen, ob eine Zahl eine ganze Zahl ist

Ich muss in der Lage sein zu erkennen, ob eine Ganzzahl eine ganze Zahl ist oder ob sie Dezimalstellen hat. 13 wäre also eine ganze Zahl und 23,23 eine Dezimalzahl.

So wie;

If 13 is a whole number then
msgbox("It's a whole number, with no decimals!")
else
msgbox("It has a decimal.")
end if
8
user2691270
If x = Int(x) Then 
  'x is an Integer!'
Else
  'x is not an Integer!'
End If
18
SSS

Sie können überprüfen, ob Boden und Decke der Nummer identisch sind oder nicht. Wenn es gleich ist, ist es eine ganze Zahl, sonst ist es anders.

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

Gemessen an der Tatsache, dass Sie einen Typ haben, den Sie benötigen, um festzustellen, ob es sich um eine Ganzzahl oder einen anderen Typ handelt, gehe ich davon aus, dass die Zahl in einer Zeichenfolge enthalten ist. In diesem Fall können Sie die Methode Integer.TryParse verwenden, um festzustellen, ob der Wert eine Ganzzahl ist. Bei Erfolg wird er auch als Ganzzahl ausgegeben. Wenn dies nicht der Fall ist, aktualisieren Sie Ihre Frage mit weiteren Informationen.

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

Bearbeiten:

Sie können dieselbe Idee verwenden, wenn Sie eine Dezimalzahl oder einen anderen Typ verwenden, um Ihre Zahl zu enthalten, und zwar in etwa so.

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
4
Mark Hall

Ich gehe davon aus, dass Ihr Anfangswert eine Zeichenfolge ist.

1 , Überprüfen Sie zuerst, ob der Zeichenfolgenwert numerisch ist.
2 , Vergleichen Sie den Boden und die Decke der Zahl. Wenn es dasselbe ist, haben Sie eine ganze Zahl.

Ich bevorzuge die Verwendung von Erweiterungsmethoden.

''' <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

Beispiel :

    Dim _myStringValue As String = "200"
    If _myStringValue.IsInteger Then
        'Is an integer
    Else
        'Not an integer
    End If
1
user3541092
 Dim Num As String = "54.54" 
 Wenn Num.Contains ("."), Dann MsgBox ("Decimal") 
 'Do Something 
0
00yoshi
if x Mod 1 = 0
  'x is an Integer!'
Else
  'x is not an Integer!'
End If
0
Yusuf