Есть ли способ указать строку стандартного или настраиваемого числового формата, чтобы всегда выводить знак, будь то + ve или -ve (хотя что он должен делать для нуля, я не уверен!)
c#
.net
formatting
string-formatting
Крэйг Ширер
источник
источник
+#;-#
, для значения 0 я получаю только «+», без фактического 0. для меня я хочу 0 появляться как «+0», так это работает:+#;-#;+0
.''
, можно добиться больших результатов! Посмотрите на этоChanges.ToString("'('#' ▲)';'('#' ▼)';''")
:! Это сэкономило мне много времени и сотниif
заявлений! :)+0;-#
вместо этого.+#;-#;+0
Этот ответ действительно вводил меня в заблуждение.Будьте осторожны, при использовании условного форматирования отрицательное значение не получает знак автоматически. Вам нужно сделать
string MyString = number.ToString("+#;-#;0");
источник
+0;-#
дает тот же результат с более чистым кодом.Вы также можете использовать строки формата в string.Format (); строка формата отделяется от индекса двоеточием (':')
var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);
Для числа {+1, -1, 0} это дает:
Вы также можете использовать интерполированную строку вместо того,
string.Format
чтобы получить тот же результат:var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
источник
+#;-#
формата для значения 0+0;-#
. :)+#;-#;+0
более ,+#;-#
как это делает его более ясным , что 0 будет отформатирован как +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).
источник
Я не могу комментировать, поэтому я отвечу здесь (система репутации орехов ....)
Вы можете использовать number.ToString ("+ 0; - #") очень хорошо, чтобы создать строку UTC String TimeFormat
Здесь показано в коде PowerShell
"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"
Спасибо @gcores https://stackoverflow.com/users/40256/gcores
источник