我有一个收费表格,其中包括金额和货币代码(USD、JPY、CAD、EUR等),我正在寻找最简单的方法来正确地格式化货币。使用我的本地区域代码(美国)并采用decimal.ToString("c")得到$0.00输出,但我想要根据代码获得正确的货币符号和小数位数。是否存在适用于此的库?当然,我可以编写一个switch语句和自定义规则,但我认为这一定已经做过了。
更新:
我已修改Jon B的示例代码如下
这让我能够简单地使用Amount.ToString(Currency["JPY"]),格式会在本地环境中输出逗号分隔符,但自动放置正确的货币符号和小数位。如果有更简洁的方法,请告诉我,否则我将很快将Jon的答案标记为正确。
更新:
我已修改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的答案标记为正确。
CultureInfo
。 - Security HoundRegionInfo
知道一个地区货币的货币代码,所以框架确实对此有一些了解。我猜想你可能需要迭代查找,因为我没有看到任何基于货币代码的查找。 - AakashMCultureInfo
告诉您如何在给定的文化中格式化类似货币的数量。它并不告诉您 JPY 的符号是 ¥。 - AakashM