如何检查十进制值是否不超过2个小数点?

时间:2011-11-02 18:27:46

标签: c# asp.net validation decimal

我有一个方法如下:

public bool IsValid(decimal rate)
{
  // 
}

费率可以介于0.00和99.99之间,并且不应超过2个小数位,否则会引发异常。

如何检查十进制值是否不超过2个小数点?例如99.123无效,而99.12无效。

4 个答案:

答案 0 :(得分:13)

怎么样:

return decimal.Round(rate, 2) == rate;

请注意,对于100.000m,这仍然会返回true,这是一个与100.00m不同的值,如果您拨打ToString,则会显示所有三位小数。

答案 1 :(得分:5)

public bool IsValid(decimal rate)
{
    return rate%0.01m == 0;
}

如果rate modulo .01为0,则返回true(如果小数是一个只包含一个或两个小数位的数字,则总是如此)。三个小数位更多将返回false(除非小数点后三位是0,EX:2.220在这种情况下将返回true)。我不确定你打算用它做什么,但如果这是一个可以接受的失败案例,这将有效。

答案 2 :(得分:0)

public bool IsValid(decimal rate){
    int temp = rate * 100;
    decimal temp2 = temp / (decimal)100;
    return temp2 == rate;
}

答案 3 :(得分:-1)

Dim s.myscript As String
dim text_value as double = "12.345" 
s = text_value.ToString
' Split string based on dot
words = s.Split(New Char() {"."c})
'if array contain decimal
If words.Length > 1 Then
If (words(1).Length > 2) = True Then
 myscript = "<script language='javascript'>alert('Please enter 2 decimal places only!');</script>"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "onclick", myscript)

Exit Sub
End If
End If