반응형
728x170
JSON 파일로 데이터를 받아오는 경우도 있지만
문자열로 데이터를 받아오는 경우도 있는데
최근에 문제가 생겼었다.
바로 C#에서의 parse 문제다.
Convert도 마찬가지다.
그 중에서 float이나 double 같이 소수점이 있는 아이들이 문제가 많다.
https://docs.microsoft.com/en-us/dotnet/api/system.single.parse?view=net-6.0
https://docs.microsoft.com/ko-kr/dotnet/api/system.convert?view=net-6.0#methods
본론으로 들어가보자
1. 문제
숫자에서 0.005를 float.parse 했을 때, 0이 되어버리는 현상
기존 서비스하던 국가가 아닌 다른 국가에서 나타나는 현상
2. 원인
다른 나라 정상 작동 => 기존의 로직은 틀리지 않음 => 데이터를 뽑아오는 부분에 문제가 있다고 생각.
실제로 문자열은 같았으나 Parse 했을 때 값이 달라짐.
3.해결
C#의 특징 중 하나인 문화권에 대한 설정이 필요함.
=>아니면 문화권에 상관없이 통일하게끔 할 수도 있다.
float.Parse("0.006", CultureInfo.InvariantCulture);
우리나라와 미국은 같은 설정을 사용해서 오류가 일어나지 않았음
글로벌 서비스를 준비중인 게임이 C#을 사용한다면 그리고 문자열을 다른 타입으로 바꾸는 방법을 사용한다면
주의 깊게 살펴보아야 할 것이다.
** 추천
처음부터 json으로 받자.
728x90
반응형
그리드형
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
Object Pooling 유니티에서 이용하기 (0) | 2022.06.06 |
---|---|
Observer Pattern를 Unity에서 이용하기 (0) | 2022.06.05 |
RectTransform과 Transform의 이해 (0) | 2022.04.17 |
C#에서의 값 형식, 참조 형식, 박싱(Boxing), 언박싱(Unboxing) [Unity] (0) | 2022.04.05 |
C#에서의 Func, Action [Unity] (0) | 2022.04.04 |