如何使用亚洲格式格式化货币

时间:2010-01-06 12:47:38

标签: c# vb.net string formatting

在印度和其他亚洲国家,资金的格式如下: 前三个数字分为三个,然后所有其他数字按两对分组。 例如:2,54,255.12 5,22,54,255.12等 string money = String.Format(“{0:#,## 0.00}”,254255.12);

给出输出254,255.12

但所需的输出是2,54,255.12

2 个答案:

答案 0 :(得分:14)

使用适当的CultureInfo和“c”格式说明符:

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

请注意,您应该使用decimal而不是double来获取货币值,以避免二进制浮点问题。

答案 1 :(得分:1)

这是一种简单明了的方法:

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

请注意,这是通过格式为provider / culture对象的正确配置的NumberFormatInfo结构来实现的。如果需要,您也可以创建自己的文化对象:

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

另请注意,如果系统配置为hi-IN是计算机上的本机文化,则默认情况下将以这种方式格式化数字,而无需显式检索区域性并将其传递给格式提供程序参数。