Изменение местоположения символа валюты в System.Globalization.NumberFormatInfo - PullRequest
3 голосов
/ 18 сентября 2009

Я создал объект CultureInfo, используя new CultureInfo ("fr-FR"). Теперь у меня есть номер, который я хочу назвать .ToString ("C", FrenchCultureInfo). Результирующая строка помещает € ПОСЛЕ числа. Почему?

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

Из всего, что я видел, евро должно быть слева, а мои требования к бизнес-требованиям - слева. Однако программно установить это значение невозможно.

Есть идеи, как мне легко установить это значение? Я начал брать американский культурный объект и копировать в него все, что связано с французской культурой, поскольку нам все еще нужны все остальные французские настройки, кроме евро по правильной стоимости. Но этот метод очень трудоемкий и неприятный.

Спасибо!

1 Ответ

6 голосов
/ 18 сентября 2009

Клонируйте оригинал, а затем измените его:

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, а не на тот, который получен для французского языка в целом - поэтому вам необходимо убедиться, что вы используете его везде.

...