Строка пользовательского числового формата, чтобы всегда отображать знак.

StackOverflow https://stackoverflow.com/questions/348201

Вопрос

Есть ли способ указать стандартную или пользовательскую строку числового формата, чтобы всегда выводить знак, будь то +ve или -ve (хотя я не уверен, что он должен делать для нуля!)

Это было полезно?

Решение

Да, ты можешь.Есть условное форматирование.Видеть Условное форматирование в MSDN

например:

string MyString = number.ToString("+0;-#");

Где каждый раздел, разделенный точкой с запятой, представляет положительные и отрицательные числа.

или:

string MyString = number.ToString("+#;-#;0");

если вы не хотите, чтобы ноль имел знак плюса.

Другие советы

Осторожно, при использовании условного форматирования отрицательное значение автоматически не получает знак. Вам нужно сделать

string MyString = number.ToString("+#;-#;0");

Вы также можете использовать строки форматирования в string.Format (); строка формата отделяется от индекса двоеточием (':')

var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);

Для числа {+1, -1, 0} это дает:

  

1, знак силы +1, знак ноль для нуля +1
  -1, знак силы -1, нет знака для нуля -1
  0, знак силы +0, знак ноль отсутствует 0

Вы также можете использовать интерполированную строку вместо string.Format для получения того же результата:

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";

В отличие от других ответов, кажется, что если вы хотите получить +1, -1, +0 (для аргументов 1, -1, 0), вам нужно использовать формат:

String.Format("{0:+#;-#;+0}", 0));  // output: +0

или

String.Format("{0:+0;-#}", 0));  // output: +0

Если вы используете просто +#;-# он будет отображаться только + (нет +0) за 0.

Пользовательский спецификатор "#"https://msdn.microsoft.com/en-us/library/0c899ak8.aspx)

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

Также имейте в виду, что если вам нужна десятичная точность, вам нужно указать ее следующим образом:

String.Format("{0:+0.##;-#.##}", 0));  // output: +0

или, если вы не хотите, чтобы нули всегда отображались, например:

String.Format("{0:+0.00;-#.00}", 0));  // output: +0.00

Для числового выражения любого типа:

+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0

Используйте три части для трех случаев:положительный; отрицательный; ноль

Другие аспекты примера:

  • Ноль не подписан.Вы можете указать что угодно, например «ноль».

  • Абсолютные значения меньше единицы имеют ведущий 0 перед десятичной запятой.Отрегулируйте по вкусу.

  • Количество цифр соответствует наибольшему и наименьшему абсолютному десятичному значению.Отрегулируйте по вкусу.

  • Символ десятичной точки зависит от культуры.Заменители .NET.

  • Разделители группировок не являются обязательными.Характер зависит от культуры.Заменители .NET.(Позиции также зависят от языка и региональных параметров, но это контролируется только вашей строкой формата.) Вы также можете использовать любые другие символы, кроме специальных символов для формата (включая , .№ 0).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top