格式化不同文化中的数字

| 假设文化是不变的,是否有可能用逗号定义其他格式的组分隔符?
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Console.WriteLine(String.Format(\"{0:#,##0}\", 2295));
输出:
2,295
所需的输出:
2.295
不变文化是一种要求,因为来自许多不同区域的货币正在使用用户定义的格式字符串进行格式化。即,对于丹麦,他们已将价格格式定义为\“ {0:0},-\”,而对于爱尔兰,其价格格式可能为\“€{0:#,## 0} \”。     
已邀请:
当您使用不同的格式字符串时,这并不意味着您必须使用InvariantCulture。如果您有德国的格式字符串,例如您可以使用Culture(\“ de-de \”)格式化此字符串:
String.Format(CultureInfo.GetCultureInfo( \"de-de\" ), \"{0:0},-\", 2295) //will result in 2.295,-
String.Format(CultureInfo.GetCultureInfo( \"en-us\" ), \"{0:0},-\", 2295) //will result in 2,295,-
或者,您可以指定自定义数字格式信息:
NumberFormatInfo nfi = new NumberFormatInfo( )
{
    CurrencyGroupSeparator = \":\"
};
String.Format(nfi, \"{0:0},-\", 2295) //will result in 2:295,-
    
正常方法是不使用不变文化。 您确实以不变式指定了格式,但是适当的符号将被替换,
#,##0.00
将以1.234,50或1,235.50出现,具体取决于所使用的实际区域性。     

要回复问题请先登录注册