2016-08-03 6 views
2

Пожалуйста, дайте мне знать правильный способ проверки десятичного значения, если десятичное (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

Почему вы упоминаете SQL Server? Это так или иначе? Не уверен, что вы просите. –

+2

Регулярное выражение? Что-то вроде этого '^ -? [0-9] {1,2} (\. [0-9] {1,2})? $' –

+0

В соответствии с десятичной (4,2), я хочу проверить, быть другим для других столбцов. Это не вопрос сервера sql. – User007

ответ

3

Вы можете попробовать так:

[RegularExpression(@"^\d{1,2}(\.\d{0,2})$",ErrorMessage = "Value contains more than 2 decimal places")] 
public decimal Value { get; set; } 
+0

Возможно, вы должны быть более ограничительными, чем '\ d +': '123456789.55' не' decimal (4,2) '; '\ Д {1,2}'; '.' выглядит как * typo *:' \ .' ожидается –

0

Если вы whant просто проверить, попробуйте использовать мод:

44.29 % 1 = 0.29 
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); 
    } 
Смежные вопросы