假设文化不变,是否可以在格式中定义不同的组分隔符 - 而不是逗号?
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Console.WriteLine(String.Format("{0:#,##0}", 2295));
输出:
2,295
期望的输出:
2.295
不变文化是一项要求,因为来自许多不同语言环境的货币都使用格式字符串进行格式化,这些字符串是用户定义的。即丹麦他们已经将价格格式定义为“{0:0}, - ”,而对于爱尔兰,它可能是“€{0:#,## 0}”。
答案 0 :(得分:9)
如果您有不同的格式字符串,这并不意味着您必须使用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,-
或者,您可以指定自定义number format info:
NumberFormatInfo nfi = new NumberFormatInfo( )
{
CurrencyGroupSeparator = ":"
};
String.Format(nfi, "{0:0},-", 2295) //will result in 2:295,-
答案 1 :(得分:2)
正常的方法是不使用不变文化。
您确实以不变样式指定格式,但正确的符号将被替换,#,##0.00
将显示为 1.234,50 或 1,235.50 ,具体取决于关于所使用的实际文化。