2013-10-16 2 views
0

나는 사용자가 계정을 만들고 모든 계정에 대해 예금과 인출을 할 수있게 해주는 은행 소프트웨어 양식을 만들어야한다. 그러나 나는 그것이 정수, 점 이후 단 하나의 자리 인 소수 또는 0사용자 입력이 소수점 이하 2 자리 이하의 소수점 일 경우 어떻게 테스트 할 수 있습니까?

Dim x As Decimal = Decimal.Parse(txtAmount.Text) 
If (txtAmount.Text.IndexOf(".") <> -1 And txtAmount.Text.Substring(txtAmount.Text.IndexOf("." + 1)).Length > 2) Then 
    MessageBox.Show("No fractions of a penny") 
    Exit Sub        
End If 

Dim a As CAccount = lbxCustomers.SelectedItem 
a.deposit(x) 

누구나 난 알고있는 점 이후 첫 번째 숫자 인 소수를 허용하는 방법을 알아낼 수 없습니다 잘못하고있는거야?

+0

마스크 속성을 #########. #으로 설정하여 Microsoft Masked Edit Control을 사용하십시오. – rags

+1

텍스트 입력에'TryParse'를 사용해야합니다. – OneFineDay

+1

샘플을 유효하거나 유효하지 않은 입력으로 업데이트하십시오. –

답변

0

제안 된대로 tryparse를 사용하는 것이 가장 좋은 출발점입니다. 추가 숫자를 무시하는 한 가지 간단한 방법은 자르기 방법입니다 :

Dim x As Decimal 
    If Decimal.TryParse(txtAmount.Text, x) Then 
     x = Decimal.Round(x * 100)/100 
    Else 
     MessageBox.Show("Only valid numbers please") 
    End If 

이 2 소수 자릿수의 최대 X을 떠날 것이다. 또한 여분의 숫자 값에 따라 결과 값을 반올림합니다. 반올림 오류가 발생하기 쉽기 때문에 Decimal 유형에 유용합니다.

0

현재 값과 반올림 값을 비교할 수 있습니다. 둘이 같은 경우 숫자가 더 이상 없음을 알 수 있습니다. 0으로 제한하려는 경우에는이 기능이 작동하지 않습니다 (2.0000이 통과).

Dim val As Decimal 

    val = 2.2345 

    If val * 100 = Math.Floor(val * 100) Then 
     ' Has 2 or less digit 
    Else 
     ' Has more than 2 digit 
    End If 
관련 문제