如何测试用户输入是否为十进制小数后不超过2位的小数?

时间:2013-10-16 03:46:31

标签: vb.net

我应该制作一个银行软件表单,允许用户为任何帐户创建帐户并存款和取款。但我无法弄清楚如何让它接受一个整数,一个小数点后只有一位数字,或一个十进制数字后面的第一个数字为0。

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)

任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

建议使用tryparse绝对是一个很好的起点。忽略额外数字的一种简单方法是使用Truncate方法:

    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

这将使x最多只有2位小数。这也会根据额外数字中的值对结果值进行舍入。这对于Decimal类型很有用,因为它很容易出现舍入错误,这甚至会使它们失效。

答案 1 :(得分: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