Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 독후감
- 일본음식
- 서평
- 자유여행
- 프로그래밍
- 개발
- javascript
- 알고리즘
- 코토리
- 해커랭크 문제풀이
- 이펙티브 C#
- 알고리즘 문제풀이
- 유니티
- Effective C#
- 정렬
- 빌드
- 문제풀이
- 책리뷰
- 프로그래밍도서
- 방학여행
- 해커랭크
- 독서
- HackerRank
- Unity
- Android
- 이펙티브 씨샵
- build
- 책 정리
- C#
- IOS
Archives
- Today
- Total
Console.Log
[C#] 소수점 Parsing 할 때, (float.Parse, double.Parse) 언어에 따른 소수점 에러 본문
프로그래밍/C#
[C#] 소수점 Parsing 할 때, (float.Parse, double.Parse) 언어에 따른 소수점 에러
Youngchangoon 2021. 10. 19. 19:15문제
float.Parse() 함수를 사용할 때 러시아, 스페인등 지역에서 파싱 에러가 난다.
FormatException: Input string was not in a correct format. at System.Number.ParseSingle (System.String value, System.Globalization.NumberStyles options, System.Globalization.NumberFormatInfo numfmt)
원인
C#에는 사용자의 문화권에 따라 , 나 . 를 사이에 사용한다. 만약 사용자의 언어 환경이 다른 숫자 표기법을 사용하는 국가라면 string에서 float나 double로 파싱할때 특정 언어 환경에서만 에러가 난다.
해결
CultureInfo.InvariantCulture 변수를 사용하면 문화권에 영향을 안받게 처리할 수 있다. Parsing할때 한번만 적용하거나 현재 작동하고 있는 쓰레드안에 있는 전체 메소드의 문화권에 적용할 수 있다.
// 메소드 하나에 적용할때
float.Parse("12312313", CultureInfo.InvariantCulture);
// 현재 쓰레드에 전체 적용할때
Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
'프로그래밍 > C#' 카테고리의 다른 글
뒤끝 비동기 함수와 C# Promise 사용하기 (0) | 2022.02.16 |
---|