我有一张包含金额和货币代码(美元、日元、加元、欧元等)的收费表,并且正在寻找正确格式化货币的最简单方法。使用我的本地文化代码(美国)并使用我的 decimal.ToString("c") 可以获得 0.00 美元的输出,但我想要基于代码的正确货币符号和小数位数。
有没有为此而存在的库?我当然可以为每个语句编写一个 switch 语句和自定义规则,但我认为这一定是以前做过的。
更新:
我修改了 Jon B 的示例代码如下
static IDictionary<string, string> GetCurrencyFormatStrings()
{
var result = new Dictionary<string, string>();
foreach (var ci in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
try
{
var ri = new RegionInfo(ci.Name);
result[ri.ISOCurrencySymbol] =
string.Format("{0}#,#0.{1};({0}#,#0.{1})",
ri.CurrencySymbol,
new string('0',
i.NumberFormat.CurrencyDecimalDigits));
}
catch { }
}
return result;
}
这使我可以简单地使用 Amount.ToString(Currency["JPY"]),格式将在我的本地上下文中输出逗号分隔符,但会自动输入正确的货币符号和小数位。
让我知道是否有人有更清洁的方法,否则我会很快将 Jon 的答案标记为正确。