web-dev-qa-db-fra.com

VB2010 Comment savoir si un nombre est un entier

Je dois être capable de dire si un entier est un nombre entier ou s'il a des décimales. Donc, 13 serait un nombre entier et 23,23 serait un nombre décimal.

Donc, comme;

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

Vous pouvez vérifier si le sol et le plafond du numéro sont identiques ou non. Si c'est égal, alors c'est un entier entier, sinon ce sera différent. 

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

A en juger par le fait que vous avez un type dont vous avez besoin pour déterminer s'il s'agit ou non d'un entier ou d'un autre type, je suppose que le nombre est contenu dans une chaîne. Si c'est le cas, vous pouvez utiliser la méthode Integer.TryParse pour déterminer si la valeur est un entier, elle sera également affichée sous forme d'entier si elle réussit. Si ce n'est pas ce que vous faites, mettez à jour votre question avec davantage d'informations.

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

Modifier:

Vous pouvez utiliser la même idée si vous utilisez un nombre décimal ou un autre type pour contenir votre nombre, n quelque chose comme ceci.

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

Je suppose que votre valeur initiale est une chaîne.

1 , vérifions d'abord si la valeur de la chaîne est numérique. 
2 , Comparez le sol et le plafond du numéro. Si c'est la même chose, vous avez un nombre entier.

Je préfère utiliser des méthodes d'extension.

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

Exemple :

    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" 
 Si Num.Contains (".") Then MsgBox ("Decimal") 
 'Faites quelque chose 
0
00yoshi
if x Mod 1 = 0
  'x is an Integer!'
Else
  'x is not an Integer!'
End If
0
Yusuf