我应该制作一个银行软件表单,允许用户为任何帐户创建帐户并存款和取款。但我无法弄清楚如何让它接受一个整数,一个小数点后只有一位数字,或一个十进制数字后面的第一个数字为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)
任何人都知道我做错了什么?
答案 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