如何验证小数位

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