2017-02-13 4 views
1

"en-IN"culture에 대한 NumberGroupSizes가 3,2,0으로 설정되어 있으며 Windows 서버 2012에서 3,2로 잘못 설정되고 이상적으로 3,2로 설정됩니다.Windows server 2012의 "ko-IN"culture에 대한 NumberGroupSizes가 잘못되었습니다.

// Gets a NumberFormatInfo associated with the en-IN culture. 
NumberFormatInfo nfi = new CultureInfo("en-IN", false).NumberFormat; 

// Displays a value with the default separator ("."). 
Int64 myInt = 123456789; 

Console.WriteLine(myInt.ToString("N", nfi)); 

위의 코드는 Windows 서버 2012에서 실행되어 1234567890,12345.00을 잘못 입력했습니다. 이상적으로는 12,34,56,78,90,12,345.00이어야합니다.

+0

짜증나지만, _programming_ 질문은 무엇입니까? – MSalters

+0

코드 세부 사항으로 질문을 편집했습니다. @MSalters –

+0

답변 할 수있는 질문과 훨씬 비슷합니다. 불행히도 저로서는 아니지만 StackOverflow에는 수천 명의 C# 전문가가 있습니다. – MSalters

답변

0

이 이유는 NumberFormatInfo.NumberGroupSizes 속성에 저장된 값입니다. 문화권 "en-IN"의 경우이 속성의 값은 {3,2,0}입니다. 즉 소수점 왼쪽 첫 번째 그룹은 3 자리 숫자이고 다음 그룹은 2 자리 숫자이며 나머지 숫자는 그룹화되지 않습니다.

이 코드를 실행하는 것으로 확인할 수 있습니다. 당신이 사용하는 NumberFormatInfo를 만들 경우

public static void Main() 
{ 
    NumberFormatInfo nfi = new CultureInfo("en-IN", false).NumberFormat; 

    Int64 myInt = 123456789; 

    Console.WriteLine("NumberGroupSizes.Length : {0}", nfi.NumberGroupSizes.Length); 
    for(var i = 0;i<nfi.NumberGroupSizes.Length; i++) 
    { 
     Console.WriteLine("NumberGroupSizes[{0}] : {1}", i, nfi.NumberGroupSizes[i]); 
    } 
    Console.WriteLine(myInt.ToString("N",nfi)); 

는 "EN-US"문화는 "NumberGroupSizes"속성에 하나의 값을가집니다 및 출력이 3 자리의 그룹의 수를 나눕니다 "3"그래서 값입니다.

NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat; 

Int64 myInt = 123456789; 

Console.WriteLine(myInt.ToString("N", nfi)); 
// The output will 123,456,789,012,345.00 

문제를 해결하려면 다음과 같이 NumberFormatInfo의 NumberGroupSizes 속성에 새 값을 설정해야합니다.

public static void Main() 
{ 
    NumberFormatInfo nfi = new CultureInfo("en-IN", false).NumberFormat; 

    Int64 myInt = 123456789; 

    int[] x = {3,2}; 
    nfi.NumberGroupSizes = x; 
    Console.WriteLine(myInt.ToString("N",nfi)); 
    //The output will be 12,34,56,78,90,12,345.00 
} 

이 문제가 해결되기를 바랍니다.

+0

@ Chetan 고맙습니다.하지만 그 질문입니다. 왜 그것은 en-IN을 위해 3,2,0으로 설정 되었습니까? 다른 모든 서버에서는 3,2 –

+0

으로 설정됩니다. 현재 숫자 형식 설정과 서버 문화권에 해당 될 수 있습니다. 다른 서버와이 서버의 차이점을 보았습니까? 이걸로 다시 보냅시다. –

+0

예, 2012 년 모든 서버에서 서로 다릅니다. 2008 서버는 잘 작동하며 로컬 시스템 설정조차도 2008 서버와 일치합니다. –