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