格式化不同文化中的数字

问题描述

| 假设文化是不变的,是否有可能用逗号定义其他格式的组分隔符?
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\" ),2295) //will result in 2,295,-
或者,您可以指定自定义数字格式信息:
NumberFormatInfo nfi = new NumberFormatInfo( )
{
    CurrencyGroupSeparator = \":\"
};
String.Format(nfi,2295) //will result in 2:295,-
    ,正常方法是不使用不变文化。 您确实以不变式指定了格式,但是适当的符号将被替换,
#,##0.00
将以1.234,50或1,235.50出现,具体取决于所使用的实际区域性。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...