使用CultureInfo时,如何在数字前面显示欧元符号



所以我想尝试在c#中显示货币并找到cultureinfo,唯一的是,没有办法在数字前面显示欧元符号,而不是我所看到的并阅读。

基本上是:

float f = 100.50;
MoneyAmount.Text = f.ToString("C", new CultureInfo("en-GB"));

将显示:£100.50

这个:

float f = 100.50;
MoneyAmount.Text = f.ToString("C", new CultureInfo("en-US"));

将显示:$ 100.50

但这是:

float f = 100.50;
MoneyAmount.Text = f.ToString("C", new CultureInfo("fr-FR"));

将显示:100.50€

fr-FR有什么办法可以显示这样的货币:€100.50?

您可以设置CultureInfo实例的NumberFormat.CurrencyPositivePatternNumberFormat.CurrencyNegativePattern

float f = 100.50f;
var culture = new CultureInfo("fr-FR");
culture.NumberFormat.CurrencyPositivePattern = 0;
culture.NumberFormat.CurrencyNegativePattern = 2;
culture.NumberFormat.CurrencyDecimalSeparator = CultureInfo.InvariantCulture.NumberFormat.CurrencyDecimalSeparator;
Console.WriteLine(f.ToString("C", culture));

打印

    €100.50

您可以自定义Cultureinfo;

var frenchCulture = new CultureInfo("fr-FR");
frenchCulture.NumberFormat.CurrencyPositivePattern = 0;
frenchCulture.NumberFormat.CurrencyNegativePattern = 2;
frenchCulture.NumberFormat.CurrencyDecimalSeparator = ".";
double value = 100.50;
Console.WriteLine(value.ToString("C", frenchCulture)); // Output : €100.50
value = -100.50; //For negative currency
Console.WriteLine(value.ToString("C", frenchCulture)); // Output : €-100.50

谁评论了" put en-FR而不是 fr-FR",所以看起来像这样:

MoneyAmount.Text = f.ToString("C", new CultureInfo("en-FR"));

谢谢Adrian,这是一个问题。我认为en-FR不存在,因为我唯一发现的是fr-FR

您可以使用currencyposivedpattern在您的CultureInfo中的numberFormatinfo类上的属性。当使用值2时,它将在数字之前更改货币符号的位置。

最新更新