본문 바로가기

.NET/C#

[C#] Parse 사용시 발생하는 이슈 🔥

이슈 발생

윈폼에서 string 숫자를 입력받아 실수로 변환하는 경우 Parse 를 사용하여 변환한다.

 

테스트 환경에서 모든 예외처리와 유효성검사를 하고 정상동작하는 것을 확인후 

실 배포 서버에 전달 하였으나, 계속해서 아래와 같은 에러가 발생했다.

 

 

에러를 테스트 환경에서는 재현을 할수가 없어서 답답한 상황...

 

의심가는 정황은 해당 배포 서버가 국내가 아닌 해외기 때문에
사용자가 사용하는 소수점 구분자도 다르고 (dot 을 쓰지 않고 comma 를 사용함) 

환경설정과 배포환경에서 사용하는 .NET 환경이 다를수도 있었다.

 

해결

float parsedFloat = float.Parse(numberString, CultureInfo.InvariantCulture);
 By using CultureInfo.InvariantCulture, you ensure that the parsing is done using a standardized format, regardless of the culture settings of the environment.

 

결론적으로 CultureInfo.InvariantCulture 인자를 추가하여 모든 환경에서 동일한 동작을 하게 만든다.

 

앞으로 Parse 사용시, 특히나 실수의 경우 더욱 주의하여 사용하자.

 


There might be incorrect information or outdated content.

'.NET > C#' 카테고리의 다른 글

[C#] float 의 위험성  (0) 2023.11.23
[C#] First, FirstOrDefault  (1) 2023.09.21
[C#] (delegate) Action & Func & Predicate  (0) 2023.08.18
[C#] delegate  (0) 2023.08.17
[C#] ref & out  (0) 2023.08.04