VB2010 如何判断一个数字是不是为整数

Posted

技术标签:

【中文标题】VB2010 如何判断一个数字是不是为整数【英文标题】:VB2010 How to tell if a number is a whole integerVB2010 如何判断一个数字是否为整数 【发布时间】:2013-09-29 01:29:10 【问题描述】:

我需要能够判断一个整数是整数还是小数。所以 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

【问题讨论】:

你用来包含号码的变量是什么类型的,是字符串吗? 【参考方案1】:

您可以检查号码的下限和上限是否相同。如果相等,那么它是一个整数,否则它会不同。

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

【讨论】:

或者你可以试试Math.Truncate(value) = value【参考方案2】:

根据您需要确定它是整数还是另一种类型这一事实来判断,我假设该数字包含在字符串中。如果是的话可以使用Integer.TryParse方法判断值是否为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

编辑:

如果您使用 Decimal 或其他类型来包含您的数字,您可以使用相同的想法,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

【讨论】:

对不起,我已经更新了原帖。输入总是一个整数,但我需要确定它是整数还是整数是否有小数位。 @user2691270 和 Integer 不能有小数点,如果有小数点,它可以是 Decimal、Double、String 或 Single 或类似的东西。这个数字是从哪里生成的,如果是文本框,它可能是一个字符串。 @MarkHall:如果您对结果不感兴趣,则不需要 TryParse 的“帮助器”变量。您可以传递一个常量(如 0、-1、42 或其他),也可以传递“无”(对于整数,默认为 0)。作为旁注:由于 OP 仅指定“整数”,我建议使用 BigInteger.TryParse。【参考方案3】:
If x = Int(x) Then 
  'x is an Integer!'
Else
  'x is not an Integer!'
End If

【讨论】:

当 x 是一个字符串时会发生什么?即“2”、“2.2”、“3.14”?或者更好的是,当 x 大于 21 亿时会发生什么?整数(即表 ID)可以并且确实超过了您可以存储在 Int 中的最大值(@ 21 亿)。 我假设严格打字。如果数字对于变量来说太大,你会得到一个溢出异常。【参考方案4】: Dim Num As String = "54.54" If Num.Contains(".") Then MsgBox("Decimal") '做一点事

【讨论】:

一些详细说明和解释会提高这个答案的质量。 此答案是唯一检查数字(作为字符串)格式是否正确的答案。其他答案等于 1 到 1.00,这是错误的。【参考方案5】:

我假设你的初始值是一个字符串。

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

示例

    Dim _myStringValue As String = "200"
    If _myStringValue.IsInteger Then
        'Is an integer
    Else
        'Not an integer
    End If

【讨论】:

【参考方案6】:
if x Mod 1 = 0
  'x is an Integer!'
Else
  'x is not an Integer!'
End If

【讨论】:

以上是关于VB2010 如何判断一个数字是不是为整数的主要内容,如果未能解决你的问题,请参考以下文章

java中如何判断输入的数是不是符合为四位整数这个条件?

在c#中如何实现判断一个数值是不是为整数(或小数)?

在c#中如何实现判断一个数值是不是为整数(或小数) 谢谢

在java里怎么判断输入的东西是否数字和正整数?(请把详细的代码给我谢谢)

用js怎么判断输入一个必须是数字?包括负数和整数

用php判断两个数字的大小和差值 两个数字均为整数