2014-07-24 8 views
3

숫자를 읽는 코드가 있는데 (문자열로 나타남) 바이트로 변환하려고합니다.C#에서이 변환으로 인해 "입력 문자열이 올바른 형식이 아닙니다." 오류?

일반적으로 값은 0과 1 사이 (예 : .25)이며 아래의 코드는 제대로 작동하지만 음수 값, 특히 "-1"이 나타나서이 코드가 왜 울리는 지 파악하려고합니다.

public static byte GetByteVal(DataRow dataRow, string caption) 
    { 
     var val = dataRow.GetValue(caption).ToString().Trim(); 

     if (!String.IsNullOrEmpty(val)) 
     { 
      decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100; 

      if (convertedVal >= 0) 
      { 
       return (byte)(convertedVal); 
      } 
      else 
      { 
       return (byte)0; 
      } 
     } 
     return (byte)0; 
    } 

"발"은 변수로 올 때 "-1", 나는이 라인에 예외가 얻을 :

decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100; 

말한다 :

,717을
+6

시도가 너무'NumberStyles.AllowLeadingSign'를 추가! – Chris

+2

@Chris 답변으로 게시해야합니다. – CodingGorilla

답변

5

당신은뿐만 아니라 NumberStyles.AllowLeadingSign 던져해야합니다 :

decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | 
              NumberStyles.AllowDecimalPoint | 
              NumberStyles.AllowLeadingSign) * 100; 
관련 문제