繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM