C# 使用CultureInfo时,如何在数字前面显示欧元符号?
所以我想尝试用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
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
无论是谁用“puten-FR
而不是FR-FR
”进行了注释,它看起来是这样的:
MoneyAmount.Text = f.ToString("C", new CultureInfo("en-FR"));
谢谢你,阿德里安,这就成功了。我不认为en-FR
存在,因为我发现的唯一东西是FR-FR
谁用“puten-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欧元
您确定这是正确的问题吗?如果法国文化决定在价值之后显示货币符号,你为什么要说相反的话?你确定这是正确的问题吗?如果法国文化决定在价值之后显示货币符号,你为什么不这么说?