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