我有一个方法如下:
public bool IsValid(decimal rate)
{
//
}
费率可以介于0.00和99.99之间,并且不应超过2个小数位,否则会引发异常。
如何检查十进制值是否不超过2个小数点?例如99.123无效,而99.12无效。
答案 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