2011-03-14 1 views
11

Я хочу форматировать целое число I (-100 < i < 100), такие, что:Как заставить знак при форматировании Int в C#

-99 форматы, как "-99"
9 форматов, как "+09"
-1 форматы, как «-01»
0 форматы, как «+00»

i.ToString("00") 

близко, но не добавляет знак +, когда ИНТ положительна.

Есть ли способ сделать это без явного различия между i >= 0 и i < 0?

+0

см http://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign – Equiso

+1

Возможного дубликат [ой числового формата строка в всегда отображать знак] (https://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign) –

ответ

28

Попробуйте это:

i.ToString("+00;-00;+00"); 

Когда разделяются точкой с запятой (;) в первом разделе будут применяться к положительным значениям и ноль (0), то вторая секция будет применяются к отрицательным значениям, третий раздел будет применяться к нулю (0).

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

Ссылка: MSDN Custom Numeric Format Strings: The ";" Section Separator

+1

OP хочет, чтобы '0' отображалось как« +00 », а не« 00 ». – LukeH

+0

@ LukeH Спасибо, исправлено! – squillman

+0

Кажется, что 'i.ToString (« + 00; -00 »);' достаточно. 0 считается положительным. – Rodolphe

3

попробовать что-то вроде этого:

i.ToString("+00;-00"); 

Некоторые примеры:

Console.WriteLine((-99).ToString("+00;-00")); // -99 
Console.WriteLine(9.ToString("+00;-00"));  // +09 
Console.WriteLine((-1).ToString("+00;-00"));  // -01 
Console.WriteLine((0).ToString("+00;-00"));  // +00 
4

Вы могли бы быть в состоянии сделать это с форматом строки, как так ..

i.ToString("+00;-00"); 

Это будет производят следующий выход.

2.ToString("+00;-00"); // +02 
(-2).ToString("+00;-00"); // -02 
0.ToString("+00;-00"); // +00 

Посмотрите на MSDN documentation for Custom Numeric Format Strings

+0

OP хочет, чтобы '0' отображалось как« +00 », , а не «00». – LukeH

+0

@ LukeH Вы правы, моя ошибка, измененный ответ, чтобы отразить это. –