2014-01-10 3 views
0

다중 계층 애플리케이션의 경우 XmlConvert.ToString()을 사용하여 xml을 생성합니다.XmlConvert.ToString이 로컬 불변하지 않습니까?

이 XML 문자열은 "구성 응용 프로그램"에 의한 구성을 위해 물리적 장치로 전송됩니다.

다른 응용 프로그램은이 실제 장치를 연결해야하며 원격 실제 장치가 동일한 구성을 갖고 있는지 확인해야합니다.

모든 필드의 문자열 값이 동일한 지 확인합니다.

우리는 우리는이 소프트웨어와 같은 지역이없는

stringValue = XmlConvert.ToString((decimal)objValue); 

에 값을 쓰고, 효과가 보인다 :

우리는 진수 값 1을받을 수 있습니다. 내 사용자 정의 로케일 (fr-CH)이있는 하나의 응용 프로그램 (구성자)에서 다음 출력을 보았습니다. "1".

그러나 다른 응용 프로그램에서는 똑같은 코드로 "1.0" 출력을 수신하므로 확인이 실패합니다.

약간의 연구 (here) 후에 XmlConvert.ToString이 문화 불변이라고 생각했습니다. 아니?

또한 10 진수를 serialize하는 데 사용할 "culture"를 구성 할 수 없습니다. 내가 뭘 놓치고 있니?

+1

는 당신에게 당신이 두 시스템에 수신 1 절대적으로 * 일정 * 있습니까 오히려 1.0보다 :

나는 매우 잘 작동 나의 진수를 정상화 this 발견? 그것들은'10 진수 '로 표현이 다릅니다. –

+0

아니요, 절대 확신 할 수는 없습니다. 저는 Visual Studio에서 마우스로 변수를 가져 가면 두 경우 모두에 '1'이 표시된다는 것을 알고 있습니다. 다른 표현을 가지고 있더라도 동일한 내용으로 쓰여지는 방법이 있습니까? – J4N

답변

0

마침내 @ 존 스키켓 (Jon Skeet) 코멘트 덕분에 더 많은 정보를 찾았습니다.

"정밀도"개념 (알지 못함)이있는 십진법 때문에 "1.0", 한번 "1"을 받았다. (실제로 1.0은 데이터베이스에서 왔는데, 정도).

public static class DecimalExtensions 
{ 
    public static Decimal Normalize(this Decimal value) 
    { 
     return value/1.000000000000000000000000000000000m; 
    } 
}