【发布时间】:2016-04-22 20:29:31
【问题描述】:
我需要格式化任何给定货币的金额,使其在当前文化中看起来符合预期。
例如,在英国文化 (en-GB) 中,人们会期望看到以下内容:
1.00 英镑 1.00 美元 €1.00
在德国文化中,相同的货币金额应显示为:
1,00 英镑 1,00 美元 1,00 欧元
我找到了一种方法(如下),该方法根据与货币相关的文化格式(例如 1.00 英镑、1.00 欧元)格式化货币/金额,但作为来自英国的人,这不太正确即使欧元不是与 en-GB 相关联的货币,预计也会看到 1.00 欧元。
public static string FormatCurrency(this decimal amount, string currencyCode)
{
var culture = (from c in CultureInfo.GetCultures(CultureTypes.SpecificCultures)
let r = new RegionInfo(c.LCID)
where r != null
&& r.ISOCurrencySymbol.ToUpper() == currencyCode.ToUpper()
select c).FirstOrDefault();
if (culture == null)
return amount.ToString("0.00");
return string.Format(culture, "{0:C}", amount);
}
任何人都可以提供或描述一种根据当前文化以任何给定货币查看金额的方法吗?
【问题讨论】:
标签: .net localization number-formatting globalization currency-formatting