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 如何判断一个数字是不是为整数的主要内容,如果未能解决你的问题,请参考以下文章