[英]How can I test if a user input is a decimal with no more than 2 digits after the decimal place?
我应该制作一个银行软件表格,该表格允许用户创建帐户并为任何帐户进行存款和取款。 但是我无法弄清楚如何使它接受整数,点后仅一个数字的十进制或点后为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个小数位。 这还将根据多余数字中的值舍入结果值。 这对于Decimal类型很有用,因为它易于舍入错误,甚至可以消除错误。
您可以将当前值与四舍五入后的值进行比较。 如果两者相等,您将知道没有更多的数字。 如果您还想限制零(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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.