2012-10-17 4 views
10

나는이 줄 때 :float.Parse는 소수 쉼표에 실패

FormatException을 : 발은 따옴표없이에 "5.267"로 설정 문자열입니다

float f = float.Parse(val, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowThousands); 

, 나는이 오류를 알 수없는 char :. System.Double.Parse (선택 System.String의, NumberStyles 스타일, IFormatProvider를 공급자) System.Single.Parse (선택 System.String의, NumberStyles 스타일)

그래서 내가 좋아하는, 쉼표를 소수점을 변경 시도 : 5267이 오류 가지고 :

FormatException을 알 수없는 문자 : System.Double.Parse (선택 System.String의, NumberStyles 스타일, IFormatProvider를 공급자) System.Single.Parse (선택 System.String의, NumberStyles 스타일)

제가하고있는 것이 아니라는 것을 알고 있습니다. 내가 할 수있는 한, 나는이 일을 올바르게하고있다. 그것은 간단한 일입니다. 그래서 그것은 왜 저에게 슬픔을 안겨주고 있습니까?

+1

왜 'float.Parse (yourValue); 방금 실행 해 쉼표 또는 소수점으로 오류가 발생하지 않았습니다. – mlorbetske

+1

'NumberStyles.Any'는 저에게 잘 작동합니다. 시도해 보셨습니까? – Adam

+0

'.'도'',''도 현재 문화권의 소수점이나 천 단위 구분 기호가 아닌가? –

답변

11

구문 분석은 문화를 인식합니다. 귀하의 지역 문화가 다른 요구 사항을 가지고 있다면 문화권 또는 다른 형식 제공자를 전달할 수 있습니다. CultureInfo.InvariantCulture을 사용해보십시오. 그렇게 할 경우 소수 옵션이 필요하지 않습니다.

float f = float.Parse(val, 
         System.Globalization.NumberStyles.AllowThousands, 
         CultureInfo.InvariantCulture); 
+1

그건 하나입니다 - InvariantCulture가 필요했습니다. Matt 감사합니다. – damocles

+0

이것은 내가 찾고 있었던 답변입니다! 고마워! –