在System.Globalization.NumberFormatInfo中更改货币符号位置

时间:2009-09-18 18:47:38

标签: c# .net-3.5 globalization

我使用新的CultureInfo(“fr-FR”)创建了一个CultureInfo对象。现在我有一个我要调用的号码.ToString(“C”,FrenchCultureInfo)。结果字符串将€AFTER数字放入。为什么呢?

CultureInfo french = new CultureInfo("fr-FR");
double value = 1234.56;
string output = value.ToString("C", french);//output = "1 234,56 €"

从我所看到的,欧元需要在左边,我的业务要求要求它在左边。但是,无法以编程方式设置此值。

关于如何轻松设置此值的任何想法?我已经开始接受一个美国文化对象并将所有东西从法国文化复制到它,因为我们仍然想要所有其他法国设置,除了正确价值的欧元。但是这种方法非常耗时且令人沮丧。

谢谢!

1 个答案:

答案 0 :(得分:6)

克隆原件然后修改它:

CultureInfo french = new CultureInfo("fr-FR");
french = (CultureInfo) french.Clone();
// Adjust these to suit
french.NumberFormat.CurrencyPositivePattern = 2;
french.NumberFormat.CurrencyNegativePattern = 2;
double value = 1234.56;
string output = value.ToString("C", french);//output = "€ 1 234,56"

请注意,这只会影响特定的CultureInfo对象,而不会影响普通法语的对象 - 因此您需要确保在任何地方都使用它。