所以我想尝试在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.CurrencyPositivePattern
和NumberFormat.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时,它将在数字之前更改货币符号的位置。