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

C# 使用CultureInfo时,如何在数字前面显示欧元符号?,c#,currency,cultureinfo,C#,Currency,Cultureinfo,所以我想尝试用C#显示货币,并找到CultureInfo,唯一的问题是,无法在数字前面显示欧元符号,我所看到的和读到的都没有 基本上: float f = 100.50; MoneyAmount.Text = f.ToString("C", new CultureInfo("en-GB")); 将显示:100.50英镑 这: 将显示:$100.50 但这是: float f = 100.50; MoneyAmount.Text = f.ToString("C", new CultureInfo

所以我想尝试用C#显示货币,并找到CultureInfo,唯一的问题是,无法在数字前面显示欧元符号,我所看到的和读到的都没有

基本上:

float f = 100.50;
MoneyAmount.Text = f.ToString("C", new CultureInfo("en-GB"));
将显示:100.50英镑

这:

将显示:$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
实例的
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

您可以自定义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"));
谢谢你,阿德里安,这就成功了。我不认为
en-FR
存在,因为我发现的唯一东西是
FR-FR

谁用“put
en-FR
而不是
FR
”来评论,所以看起来是这样的:

MoneyAmount.Text = f.ToString("C", new CultureInfo("en-FR"));
谢谢你,阿德里安,这就成功了。我不认为
en-FR
存在,因为我发现的唯一东西是
FR-FR

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

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

en IE
是一种更常见的语言环境(因为在该国更常用这种语言),具有相同的效果,但如果您真正想要的是“法语,如法国所说,但前面是欧元”,那么Rainman的答案就更接近这个了。(我也会小心使用
浮点数
值而不是
十进制
)的金额。最初是我提出的,但我用了更好的方法更新了我的答案(这不需要更改区域设置字符串)好的,谢谢Adrian:)对我来说,更改区域设置字符串也更好,因为我现在拥有的是一个字符串数组,由
en GB、en FR、en US
组成,然后是binaryReader,它读取所使用的
货币的ID,因此如果它为0,那么所有东西都将具有
,如果1然后
,如果
2然后
$
,它将从数组中获取相应的文化信息。
en IE
是一种更常见的语言环境(因为在它的国家中,这种语言更常用),具有相同的效果,但如果您真正想要的是“法语,就像在法国说的那样,但前面是欧元”,然后Rainman的答案更接近于此。(我也会小心使用
浮动
值而不是
十进制
)的金额。最初是我提出的,但我用了更好的方法更新了我的答案(这不需要更改区域设置字符串)好的,谢谢Adrian:)对我来说,更改区域设置字符串也更好,因为我现在拥有的是一个字符串数组,由
en GB、en FR、en US
和二进制读取器组成,二进制读取器读取
正在使用的货币ID,因此如果它为0,则所有内容都将具有
,如果为1,则
,如果
 2
然后
$
它将从数组中获取相应的CultureInfo。
frenchCulture.NumberFormat.CurrencyPositivePattern=0;frenchCulture.NumberFormat.CurrencyDecimalSeparator=“。";
将使输出与要求的完全匹配,
100.50欧元
frenchCulture.NumberFormat.CurrencyPositivePattern=0;frenchCulture.NumberFormat.CurrencyDecimalSeparator=“.”
将使输出与要求的完全匹配,
100.50欧元
您确定这是正确的问题吗?如果法国文化决定在价值之后显示货币符号,你为什么要说相反的话?你确定这是正确的问题吗?如果法国文化决定在价值之后显示货币符号,你为什么不这么说?