如何测试用户输入是否是小数点后不超过 2 位的小数



我应该制作一个银行软件表单,允许用户创建帐户并为任何帐户进行存款和取款。但是我不知道如何让它接受一个整数,一个点后只有一个数字的小数,或者一个点后的第一个数字是 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)

有人知道我做错了什么吗?

按照建议使用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 位小数。 这还会根据额外数字中的值对结果值进行舍入。 这对于十进制类型很有用,因为它容易出现舍入错误,这将使它们均匀。

您可以将当前值与舍入值进行比较。如果两者相等,您就知道没有更多的数字。如果您还想限制零(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

最新更新