如何验证小数位

时间:2016-08-03 11:16:58

标签: c# c#-4.0 c#-3.0

请让我知道验证十进制值的好方法,如果十进制(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;
}

3 个答案:

答案 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);
    }