如何验证小数位
How to validate decimal places
请告诉我验证十进制值的好方法,如果是 decimal(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;
}
你可以这样试试:
[RegularExpression(@"^\d{1,2}(\.\d{0,2})$",ErrorMessage = "Value contains more than 2 decimal places")]
public decimal Value { get; set; }
如果您只想验证,请尝试使用 mod:
44.29 % 1 = 0.29
从上面的答案我可以这样做
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);
}
请告诉我验证十进制值的好方法,如果是 decimal(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;
}
你可以这样试试:
[RegularExpression(@"^\d{1,2}(\.\d{0,2})$",ErrorMessage = "Value contains more than 2 decimal places")]
public decimal Value { get; set; }
如果您只想验证,请尝试使用 mod:
44.29 % 1 = 0.29
从上面的答案我可以这样做
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);
}