2014-04-05 1 views
7

시스템 언어가 "de_DE.UTF-8"로 설정된 라즈베리 파이와 모노 버전 3.28이 설치되어 있습니다. 내 프로그램은 DoublesStrings을 변환해야하지만, 나는 몇 가지 문제로 실행 : 독일어 로켈에서 Double.Parse가 실패 함

Double.Parse("500", NumberStyles.Float, CultureInfo.InvariantCulture); 

가 잘 작동

.

Double.Parse("500.123", NumberStyles.Float, CultureInfo.InvariantCulture); 

왜곡 FormatException, 이상한 무엇입니까?

Double.Parse("500,123", NumberStyles.Float, CultureInfo.GetCultureInfo("de-DE")); 

FormatException도 예외입니다.

재미있는 점은 시스템 언어 (sudo raspi-config)를 "en-GB.UTF-8"로 변경하면 모든 기능이 예상대로 작동한다는 것입니다. 누구든지이 문제를 독일 사용자로 해결하는 방법을 알고 있으며 독일 시스템 설정을 사용하고 싶습니다.

+3

Mono 프로젝트에 버그를 신고해야합니다. 또는 직접 오픈 소스의 요점을 스스로 고치십시오. –

+1

Imo 문제는 culture/구문 분석 자체가 아니라 ARMHF (Raspberry PI)의 float/double 처리 Mono 문제입니다. 3.2.7 이전 버전에서는 armhf의 부동 소수점에 문제가 있었기 때문에 사용자가 3.2.8을 모노 버전으로 사용하고 있는지 확인할 수 있습니까? –

+0

내 모노 버전 : 모노 JIT 컴파일러 버전 3.2.8 (Debian 3.2.8 + dfsg-4 + rpi1) 저작권 (C) 2002-2014 Novell, Inc, Xamarin Inc 및 기여자. www.mono-project.com \t TLS : 없음 \t 기타 : softdebug \t LLVM : 지원 사용할 수 없습니다 VFP + 하드 \t 장애인, ARMEL : \t 알림 정상 : epoll에 \t 아키텍처 \t SIGSEGV를 __thread. \t GC : sgen mono 3.27이 초기 armhf 포트를 가져온 것 같습니다. @HansPassant Double.cs의 출처를 조사했습니다. 내가 생각하기에 /master/mcs/class/corlib/System/Double.cs 533에서이 일을하고있다. 하지만 코드 ParseImpl을 찾을 수 없습니다. – user3469517

답변

1

이 버그는 아직 나무 딸기 repo에 업로드되지 않은 mono 3.4로 수정되었습니다.

0

NumberStyles.AllowDecimalPoint를 스타일 매개 변수로 전달하십시오. 두 가지 징후가 다른 방식으로 해석 될 수 있기 때문에 간단한 충돌이있을 수 있습니다.

+1

[docs] (http://msdn.microsoft.com/en-us/library/system.globalization)에 따르면, .numberstyles % 28v = vs.110 % 29.aspx),'NumberStyles.Float'는 이미'NumberStyles.AllowDecimalPoint'를 포함하고'NumberStyles.AllowThousands'를 포함하지 않습니다. 그러한 경우 라 할지라도 특정한 문화가 주어지면 상징의 어느 부분도 "다른 방식으로 해석 될 수 없다"는 이유로 "갈등"이 없어야합니다. –

+1

오 잘. 아마도 조금 더 읽었을 것입니다. 문자열을 매개 변수로 사용하여 Double.parse와 혼합했습니다. –