用于将整数计算为小数的函数

时间:2014-02-14 09:30:24

标签: vb.net .net-2.0

我编写了一个相当原始的共享函数来评估输入到文本框中的数值。用户可以输入小数或整数,我正在评估的范围是5.0到14.0。 if语句的前两部分返回true,但是当输入整数并且没有小数点时,最后一部分返回false作为小数位数。如何修改此函数以在所有路径上返回true?

Public Shared Function CheckDecimalValue(ByVal txtbox As TextBox) As Boolean
    Dim returnValue As Boolean = True
    Dim txtAsDecimal As Decimal = CType(txtbox.Text, Decimal)
    Dim decimalAsString As String = CType(txtAsDecimal, String)
    Dim indexOfDecimalPoint As Integer = decimalAsString.IndexOf(".")
    Dim numberOfDecimals As Integer = decimalAsString.Substring(indexOfDecimalPoint + 1).Length

    If txtAsDecimal < 5 Then
        returnValue = False
    ElseIf txtAsDecimal > 14 Then
        returnValue = False
    ElseIf numberOfDecimals > 1 Then
        returnValue = False
    End If

    Return returnValue
End Function

2 个答案:

答案 0 :(得分:3)

真的,只需使用Decimal.TryParse即可。

如果用户使用其中.不是小数分隔符的其他文化,则代码会中断。

示例:

Public Shared Function CheckDecimalValue(txtbox As TextBox) As Boolean
    Dim tmp As Decimal
    Return Decimal.TryParse(txtbox.Text, tmp) AndAlso tmp >= 5 AndAlso tmp <= 14
End Function

答案 1 :(得分:2)

强烈建议改为使用Decimal.TryParse

例如:

Public Shared Function CheckDecimalValue(ByVal txtbox As TextBox) As Boolean

    Dim val as Decimal

    If Not Decimal.TryParse(txtbox.Text,val) Then Return False

    If val < 5 Or val > 14 Then Return False

    'Space for other checks

    Return True

End Function