为当前文化(不是货币文化)格式化任何货币和金额
Format any currency and amount for current culture (not culture of the currency)
我需要以任何给定货币格式化金额,使其在当前文化中看起来符合预期。
例如,在英国文化 (en-GB) 中,人们会期望看到以下内容:
£1.00
1.00 美元
€1.00
在德国文化中,相同的货币金额应显示为:
1,00 英镑
1,00 $
1,00 欧元
我找到了一种方法(如下),它根据与货币相关的文化格式(例如 £1.00、1,00 €)格式化 currency/amount 但这不太正确,因为来自英国的人希望看到 €1.00,即使欧元不是与 en-GB 关联的货币。
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);
}
任何人都可以提供或描述一种根据当前文化查看任何给定货币金额的方法吗?
要将当前符号设置为所需符号(£、$、€ 或其他任何符号),同时仍使用当前文化的其他属性,您只需克隆当前的 NumberFormatInfo 并替换货币符号:
var cultureInfo = Thread.CurrentThread.CurrentCulture;
var numberFormatInfo = (NumberFormatInfo)cultureInfo.NumberFormat.Clone();
numberFormatInfo.CurrencySymbol = "€"; // Replace with "$" or "£" or whatever you need
var price = 12.3m;
var formattedPrice = price.ToString("C", numberFormatInfo); // Output: "€ 12.30" if the CurrentCulture is "en-US", "12,30 €" if the CurrentCulture is "fr-FR".
我需要以任何给定货币格式化金额,使其在当前文化中看起来符合预期。
例如,在英国文化 (en-GB) 中,人们会期望看到以下内容:
£1.00 1.00 美元 €1.00
在德国文化中,相同的货币金额应显示为:
1,00 英镑 1,00 $ 1,00 欧元
我找到了一种方法(如下),它根据与货币相关的文化格式(例如 £1.00、1,00 €)格式化 currency/amount 但这不太正确,因为来自英国的人希望看到 €1.00,即使欧元不是与 en-GB 关联的货币。
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);
}
任何人都可以提供或描述一种根据当前文化查看任何给定货币金额的方法吗?
要将当前符号设置为所需符号(£、$、€ 或其他任何符号),同时仍使用当前文化的其他属性,您只需克隆当前的 NumberFormatInfo 并替换货币符号:
var cultureInfo = Thread.CurrentThread.CurrentCulture;
var numberFormatInfo = (NumberFormatInfo)cultureInfo.NumberFormat.Clone();
numberFormatInfo.CurrencySymbol = "€"; // Replace with "$" or "£" or whatever you need
var price = 12.3m;
var formattedPrice = price.ToString("C", numberFormatInfo); // Output: "€ 12.30" if the CurrentCulture is "en-US", "12,30 €" if the CurrentCulture is "fr-FR".