请让我知道验证十进制值的好方法,如果十进制(4,2)它应该接受2位数字和2位小数。
var value = "44.29";
var dec = value.Split('.');
然后可以使用长度,我需要一种更好的文化特定方式。我需要一个可以应用于所有十进制字段的通用解决方案。
像:
validate(int before,int afterdecimal);
var valid = validate(2,2);
需要一个通用的清洁剂解决方案
private static bool IsDecimal(string value, int before, int after)
{
if (value.Contains("."))
{
var parts = value.Split('.');
if (parts[0].Length == before && parts[1].Length == after)
return true;
}
else if(value.Length == before)
return false;
return true;
}
答案 0 :(得分:3)
您可以尝试这样:
[RegularExpression(@"^\d{1,2}(\.\d{0,2})$",ErrorMessage = "Value contains more than 2 decimal places")]
public decimal Value { get; set; }
答案 1 :(得分:0)
如果您只是验证,请尝试使用mod:
44.29 % 1 = 0.29
答案 2 :(得分:0)
从上面的答案我能够像这样做
string value = "2009.99";
if (IsDecimal(value, 4, 4))
{
Console.WriteLine("Valid");
}
private static bool IsDecimal(string value, int before, int after)
{
var r = new Regex(@"^\d{1," + before + @"}(\.\d{0," + after + @"})$");
return r.IsMatch(value);
}