Отформатируйте отрицательные числа в скобках, НО НЕ с символом $? - PullRequest
23 голосов
/ 01 декабря 2011

Я видел по всему Интернету форматирование ОТРИЦАТЕЛЬНОГО двойного значения с круглыми скобками с символом $, т.е. тип валюты.

Я ищу строку формата .NET для форматирования

12345.67 = 12,345.67

-12345.67 = (12,345.67)

Ответы [ 2 ]

54 голосов
/ 01 декабря 2011

MSDN на условное форматирование на помощь!

Вы можете указать до трех различных разделов строки формата одновременно, разделяя их точкой с запятой.Если вы указываете две секции форматной строки, первая используется для положительных и нулевых значений, а вторая - для отрицательных значений;если вы используете три раздела, первый используется для положительных значений, второй - для отрицательных значений, а третий - для нулевых значений.

Вывод этого кода C #:

        string fmt1 = "#,##0.00";
        string fmt2 = "#,##0.00;(#,##0.00)";
        double posAmount = 12345.67;
        double negAmount = -12345.67;
        Console.WriteLine("posAmount.ToString(fmt1) returns " + posAmount.ToString(fmt1));
        Console.WriteLine("negAmount.ToString(fmt1) returns " + negAmount.ToString(fmt1));
        Console.WriteLine("posAmount.ToString(fmt2) returns " + posAmount.ToString(fmt2));
        Console.WriteLine("negAmount.ToString(fmt2) returns " + negAmount.ToString(fmt2));

равен:

posAmount.ToString(fmt1) returns 12,345.67
negAmount.ToString(fmt1) returns -12,345.67
posAmount.ToString(fmt2) returns 12,345.67
negAmount.ToString(fmt2) returns (12,345.67)
3 голосов
/ 01 декабря 2011

Вы можете использовать функцию FormatNumber:

FormatNumber(-100, UseParensForNegativeNumbers:=TriState.True)

вернет "(100)"

Есть еще на MSDN

...