Причина этого - значения, хранящиеся в собственности NumberFormatInfo.NumberGroupSizes
. Для культуры «en-IN» это свойство имеет значения {3,2,0}
, что означает, что первая группа числа, оставшегося до десятичной точки, будет иметь 3 цифры, следующая группа будет иметь 2 цифры, а остальная часть номера не будет сгруппирована.
Вы можете проверить, как работает этот код.
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));
При создании NumberFormatInfo с использованием культуры «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
Чтобы решить проблему, с которой нужно установить новые значения свойства NumberGroupSizes в NumberFormatInfo следующим образом.
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
}
Я надеюсь, что это решит вашу проблему.
Звучит раздражающе, но что такое _programming_ вопрос? – MSalters
Я только что редактировал вопрос с кодовыми подробностями @MSalters –
Выглядит скорее как вопрос, на который можно ответить. К сожалению, не я, но StackOverflow имеет тысячи экспертов C#. – MSalters