그외

[C#] float.parse와 포르투갈어 사건 (CultureInfo 관련)

by 조루나 posted Jul 26, 2024
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄


서비스 중인 게임의 브라질 유저가 게임이 이상하다고 리포트가 와서

 

이게 대체 무슨 난리인가 싶어서 안드로이드 에뮬레이터를 포르투갈어로 바꿔서 테스트 해본 결과

조사를 거친 결과 CSV에서 float를 파싱할 때 .이 씹혀서 0.15가 15가 되는 등 문제가 발생하고 있었다.

 

한국어는 1000.45를 표기 할 때 표기법이 1,000.45 이지만

포르투갈어는 1.000,45 였던 것.

 

미친.

 

그래서 float를 파싱할 때에는

float.Parse("1000.45", CultureInfo.InvariantCulture);

float.Parse("1000.45", new CultureInfo("kr-KR"));

float.TryParse("1000.45", System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out float PARSEDFLOAT);

등 CultureInfo 매개변수 설정을 해줘야한다.

 

다행히 선리스시티는 CSV에 float를 안 씀.

 

내 생각에 기기 포르투갈어로 설정한 다음

인디인디한 게임들 들어가보면 에러나서 게임이 안 되거나 핵 안 써도 수치가 망가지거나 하는 게임 꽤 있을 듯

아니면 내가 너무 근본 없이 맨땅에 헤딩으로 코딩을 익혀서, 나만 이런 기본 상식이 없는 걸지도.

 

 

결론

CSV 파싱 같은 거 할 때는 float.parse에 주의 하자.



Articles

1 2 3