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

问题描述:

所以我想尝试在C#中显示货币,发现CultureInfo,唯一的事情是,没有办法在数字的前面显示欧元符号,而不是从我所看到和阅读的内容。如何在使用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?

+0

你确定这是正确的问题吗?如果法国文化决定在价值之后显示货币符号,那么为什么你要另外说呢? –

您可以设置NumberFormat.CurrencyPositivePatternCultureInfo实例NumberFormat.CurrencyPositivePattern

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 
+0

我因为您的示例不适用于负面货币而降低了投票权。 – lucky

您可以自定义的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 
+0

'frenchCulture.NumberFormat.CurrencyPositivePattern = 0; frenchCulture.NumberFormat.CurrencyDecimalSeparator =“”;'会使输出完全匹配@JonHanna这正是我的回答状态发生了什么要求,'€100.50' –

+0

... – Adrian

六条与评论说:“把en-FR而不是fr-FR”,所以它看起来是这样的:

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

谢谢阿德里安,该诀窍。我不认为en-FR存在,因为我发现的唯一的东西是fr-FR

+0

'EN-IE'是一种较为常见的语言环境(因为在这个国家这种语言更常用),但是如果你真正想要的是“法国的,法国的,法国的,但欧元在前面”,那么Rainman的答案更接近于。 (我也会小心'浮动'值而不是'小数'的金额)。 –

+0

这是我是谁首先提出的建议,但我已经更新了我的答案有一个更好的方法(不需要变更语言字符串) – Adrian

+0

以及感谢阿德里安:) 也是其对我来说只是为了更好地改变本地化字符串的原因是什么我现在所拥有的是一个字符串数组组成的'EN-GB,EN-FR,EN-US'然后BinaryReader在读取了'什么货币正在used' ID,因此如果其0那么一切都将有''£,如果1然后''€如果'2'然后'$',它会从阵列中得到相应的CultureInfo。 – JazzEX

你可以在你的CultureInfo使用上的NumberFormatInfo类CurrencyPositivePattern 属性。当使用值2时,它会在数字前改变货币符号的位置。