Как использовать NumberFormatInfo для удаления круглых скобок для отрицательных значений

В настоящее время для создания значений в долларах США в нашем веб-приложении мы используем следующее:

string.Format("{0:C0}", dollarValue );

В этом примере, если dollarValue равно 145, тогда мы увидим: $ 145. Если это -145, то мы увидим (145 долларов), а не - 145 долларов. Обратите внимание, что для нас значение DollValue является двойным, но это может быть любой числовой тип. Я думаю.

В любом случае, я хочу, чтобы это было либо 145, либо - 145 долларов.

Теперь, согласно моим исследованиям, возможно сделать это с помощью класса NumberFormatInfo. Я не могу понять, как его использовать, и я не могу найти ни одного действительного примера. Я видел этот вопрос здесь:C # создание пользовательского NumberFormatInfo для отображения & quot; Свободного & quot; когда значение валюты составляет 0,00 $ но пример из MSDN, связанный с этим вопросом, немного отличается от того, что я действительно хочу сделать.

Я понимаю, мне нужно будет сделать что-то из следующего:

double dollarValue = -145d;
string myMoney = dollarValue.ToString( "C0", someIFormatProvider );

где someIFormatProvider, скорее всего, имеет тип NumberFormatInfo. Теперь то, что я сделал, это:

NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString( "C0", ni );

... и я получаю & quot; Экземпляр только для чтения & quot; исключение. В то время как & quot; документация & quot; для свойства CurrencyNegativePattern указано, что вы можете УСТАНОВИТЬ и ПОЛУЧИТЬ значение, по-видимому, вы не можете. Кроме того, NumberFormatInfo является закрытым классом. Я не могу легко создать новый класс на основе этого и переопределить значение.

Я в растерянности относительно того, как с этим справиться. Прямо сейчас мой обходной путь должен просто отрицать мою отрицательную ценность и иметь положительный результат, который я делаюstring.Format(...) снова. Да, я понимаю, что перед этим нет никаких отрицательных признаков, но, разумеется, это легко устранить, добавив "-". перед результатом по мере необходимости.

Кто-нибудь сможет предоставить мне рабочий пример того, как эффективно использовать класс NumbefFormatInfo в этой ситуации? Благодарю.

Ответы на вопрос(6)

Ваш ответ на вопрос