String.Format (& # 8220; {0: C2} & # 8221 ;, -1234) (формат валюты) обрабатывает отрицательные числа как положительные
-
05-07-2019 - |
Вопрос
Я использую String.Format (" {0: C2} " ;, -1234)
для форматирования чисел.
Всегда форматирует сумму в положительное число, а я хочу, чтобы она стала $ - 1234
Решение 3
Я думаю, что я просто буду использовать:
FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False)
(в модуле Microsoft.VisualBasic.Strings)
Или более короткими словами (это то, что я собираюсь использовать):
FormatCurrency(-1234.56, 2, 0, 0)
Или я создам собственную функцию форматирования валюты, которая использует функцию VB, передавая мои пользовательские параметры.
Для получения более подробной информации ознакомьтесь с функцией FormatCurrency ( Visual Basic) в MSDN.
Другие советы
Прав ли я, говоря, что он заключен в квадратные скобки, то есть форматируется как ($ 1,234.00)
? Если это так, то я считаю, что такое поведение предназначено для США.
Однако вы можете создать свой собственный NumberFormatInfo
, который не будет так себя вести. Возьмите существующий NumberFormatInfo
, который «в основном прав», вызовите Clone ()
для создания изменяемой копии, а затем установите CurrencyGroupSizes
для new int [] {0}
и используйте вместо него " {0: C0} "
" {0: C2} "
в качестве строки формата.
РЕДАКТИРОВАТЬ: Вот вспомогательный метод, который вы можете использовать, который в основном делает то же самое:
private static readonly NumberFormatInfo CurrencyFormat = CreateCurrencyFormat();
private static NumberFormatInfo CreateCurrencyFormat()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
return clonedNumbers;
}
public static string FormatCurrency(decimal value)
{
return value.ToString("C2", CurrencyFormat);
}
Другой простой вариант - указать строку формата вручную.
String.Format("{0:$#,##0.00}", -1234)
Или, если символ валюты должен быть параметром, вы можете сделать это
String.Format("{0:" + symbol + "#,##0.00}", -1234)