2013-09-24 60 views
6

Tôi cần phải biết số nguyên là một số nguyên hay số nguyên có số thập phân. Vì vậy, 13 sẽ là một số nguyên và 23.23 sẽ là một số thập phân.VB2010 Làm thế nào để biết số có phải là một số nguyên không

Vì vậy, thích;

If 13 is a whole number then 
msgbox("It's a whole number, with no decimals!") 
else 
msgbox("It has a decimal.") 
end if 
+0

kiểu gì được biến mà bạn đang sử dụng để chứa số điện thoại, nó là một chuỗi ?. –

Trả lời

7

Bạn có thể kiểm tra xem sàn và trần của số có giống nhau hay không. Nếu nó bằng, thì nó là một số nguyên, nếu không nó sẽ khác.

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

Đánh giá bởi thực tế là bạn có một loại mà bạn cần xác định có phải là số nguyên hay loại khác tôi giả định số được chứa trong chuỗi. Nếu bạn có thể sử dụng phương thức Integer.TryParse để xác định xem giá trị có phải là Số nguyên không, nó cũng sẽ xuất ra dưới dạng số nguyên nếu thành công. Nếu đây không phải là những gì bạn đang làm, hãy cập nhật câu hỏi của bạn với nhiều thông tin hơn.

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 

Edit:

Bạn có thể sử dụng ý tưởng tương tự nếu bạn đang sử dụng một số thập phân hoặc Loại khác để chứa số điện thoại, n một cái gì đó như thế này.

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 
+0

Xin lỗi, tôi đã cập nhật bài đăng gốc. Đầu vào luôn luôn là một số nguyên nhưng tôi cần phải tìm ra nếu nó là một số nguyên hoặc nếu số nguyên có bất kỳ vị trí thập phân nào. – user2691270

+2

@ user2691270 một [Số nguyên] (http://www.techterms.com/definition/integer) không thể có dấu thập phân, nếu có dấu thập phân, nó là một số thập phân, đôi, chuỗi hoặc đơn hoặc một thứ gì đó dọc theo các dòng đó. Số này được tạo từ đâu, nếu một Textbox có lẽ là một chuỗi. –

+2

@MarkHall: Bạn không cần biến "trợ giúp" cho TryParse nếu bạn không quan tâm đến kết quả. Bạn có thể truyền một hằng số (như 0, -1, 42 hoặc bất kỳ thứ gì), hoặc "không có gì" (mặc định là 0 cho một số nguyên). Là một sidenote: Vì OP chỉ xác định "toàn bộ số", tôi đề nghị sử dụng BigInteger.TryParse. – igrimpe

17
If x = Int(x) Then 
    'x is an Integer!' 
Else 
    'x is not an Integer!' 
End If 
+0

Ngọt ngào và đơn giản. – Wakka02

+0

Điều gì xảy ra khi x là một chuỗi? tức là "2", "2.2", "3.14"? Hoặc thậm chí tốt hơn, điều gì xảy ra khi x lớn hơn 2,1 tỷ? Các số nguyên (ví dụ: ID bảng) có thể và vượt quá giá trị tối đa bạn có thể lưu trữ trong một Int (@ 2,1 tỷ). – user3541092

+0

Tôi đã nhập sai. Bạn sẽ nhận được một ngoại lệ tràn nếu số quá lớn cho biến đó. – SSS

0
 
Dim Num As String = "54.54" 
If Num.Contains(".") Then MsgBox("Decimal") 
'Do Something 
+2

Một số giải thích và giải thích sẽ cải thiện chất lượng của câu trả lời này. –

+0

Câu trả lời này là câu trả lời duy nhất để kiểm tra xem số (dưới dạng chuỗi) có được định dạng chính xác hay không. Các câu trả lời khác bằng từ 1 đến 1,00 và điều này là sai. –

1

Tôi giả định rằng giá trị ban đầu của bạn là một chuỗi.

, Trước tiên hãy kiểm tra xem giá trị chuỗi có phải là số hay không.
, So sánh sàn và trần của số. Nếu nó giống nhau, bạn có một số nguyên.

Tôi thích sử dụng các phương pháp mở rộng.

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

Ví dụ:

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