Как отформатировать деньги, используя азиатский формат - PullRequest
2 голосов
/ 06 января 2010

В Индии и других азиатских странах деньги имеют следующий формат: Первые три цифры сгруппированы в три, затем все остальные цифры сгруппированы в пару по две. Например: 2,54,255.12 5,22,54,255.12 и т. д. string money = String.Format ("{0: #, ## 0.00}", 254255.12);

дает вывод 254,25.12

, но требуемый вывод - 2,54,255.12

Ответы [ 2 ]

14 голосов
/ 06 января 2010

Используйте соответствующий CultureInfo и спецификатор формата "c":

CultureInfo hindi = CultureInfo.CreateSpecificCulture("hi-IN");
string text = string.Format(hindi, "{0:c}", 254255.12);

Обратите внимание, что вы действительно должны использовать decimal вместо double для значений валюты, чтобы избежать двоичных проблем с плавающей запятой.

1 голос
/ 06 января 2010

Это простой метод:

System.Globalization.CultureInfo ci = 
   System.Globalization.CultureInfo.GetCultureInfo("hi-IN");
Console.WriteLine((123456789.87).ToString("N", ci));

Обратите внимание, что это достигается с помощью правильно настроенной структуры NumberFormatInfo в поставщике формата / объекте культуры. Вы также можете создавать свои собственные объекты культуры, если это необходимо:

foreach (int gs in ci.NumberFormat.CurrencyGroupSizes)
{
   Console.WriteLine(gs);
}

Также обратите внимание, что если система настроена так, что hi-IN является родной культурой на компьютере, по умолчанию числа будут форматироваться таким образом, без необходимости явно извлекать культуру и передавать ее в аргумент поставщика форматирования.

...