Vb.net VB2010如何判断数字是否为整数

Vb.net VB2010如何判断数字是否为整数,vb.net,numbers,integer,Vb.net,Numbers,Integer,我需要知道整数是整数还是小数。13是一个整数,23.23是一个小数 如此相似 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 Math.Floor(value) = Math.Ceiling(value) Then .

我需要知道整数是整数还是小数。13是一个整数,23.23是一个小数

如此相似

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 Math.Floor(value) = Math.Ceiling(value) Then
...
Else
...
End If

根据你有一种类型,你需要确定它是整数还是另一种类型,我假设这个数字包含在一个字符串中。如果是这样,您可以使用该方法确定该值是否为整数,如果成功,它也会将其作为整数输出。如果这不是你正在做的,请用更多信息更新你的问题

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
Dim Num As String=“54.54” 如果Num.Contains(“.”),则MsgBox(“十进制”) “做点什么
我假设你的初始值是一个字符串

1,首先检查字符串值是否为数字
2,比较数字的下限和上限。如果它是相同的,你有一个整数

我更喜欢使用扩展方法

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

您用来包含数字的变量是什么类型的?是字符串吗?对不起,我已经更新了原始帖子。输入总是一个整数,但我需要确定它是一个整数还是整数有小数点。@user2691270 an不能有小数点,如果有小数点,它可以是小数点、双精度、字符串或单精度,或者是沿着这些线的其他值。这个数字是从哪里生成的,如果是一个文本框,它可能是一个字符串。@MarkHall:如果您对结果不感兴趣,那么TryParse不需要“helper”变量。您可以传递一个常量(如0、-1、42或其他),也可以传递“nothing”(整数的默认值为0)。作为旁注:由于OP只指定了“整数”,我建议使用biginger.TryParse。一些详细说明和解释将提高此答案的质量。此答案是唯一检查数字(作为字符串)格式是否正确的答案。其他答案等于1到1.00,这是错误的。当x是字符串时会发生什么?i、 e.“2”、“2.2”、“3.14”?甚至更好的是,当x大于21亿时会发生什么?整数(即表ID)可以而且确实超过了可以存储在整数中的最大值(@21亿)。我假设严格键入。如果数字对于变量来说太大,则会出现溢出异常。或者,如果
Math.Truncate(value)=value,则可以尝试
Dim Num As String = "54.54"
If Num.Contains(".") Then MsgBox("Decimal") 
'Do Something
''' <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
if x Mod 1 = 0
  'x is an Integer!'
Else
  'x is not an Integer!'
End If