2011-03-14 16 views
11

Quiero dar formato a un número entero i (-100 < i < 100), tal que:Cómo forzar una señal al dar formato a un Int en C#

-99 formatos como "-99"
9 formatos como "09"
-1 formatos como "-01"
0 formatos como "00"

i.ToString("00") 

está cerca, pero no agrega el signo + cuando el int es positivo.

¿Hay alguna manera de hacer esto sin distinguir explícitamente entre i >= 0 y i < 0?

+0

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

+1

duplicado posible de [cadena de formato numérico personalizado a siempre muestre el signo] (https://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign) –

Respuesta

28

Prueba esto:

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

cuando están separados por un punto y coma (;), la primera sección se aplicará a los valores positivos y cero (0), la segunda sección se aplicar a valores negativos, la tercera sección se aplicará a cero (0).

Tenga en cuenta que la tercera sección se puede omitir si desea formatear el cero de la misma manera que los números positivos. La segunda sección también se puede omitir si desea obtener los negativos con el mismo formato que los positivos, pero quiere un formato diferente para cero.

Referencia: MSDN Custom Numeric Format Strings: The ";" Section Separator

+1

El OP quiere que '0' se muestre como "+00", no como "00". – LukeH

+0

@LukeH ¡Gracias, corregidos! – squillman

+0

Parece que 'i.ToString (" + 00; -00 ");' es suficiente. 0 se considera positivo aquí. – Rodolphe

3

intentar algo como esto:

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

Algunos ejemplos:

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

que podría ser capaz de hacerlo con una cadena de formato como tal ..

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

Esto haría produce la siguiente salida ..

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

Tome un vistazo a la MSDN documentation for Custom Numeric Format Strings

+0

El OP quiere que '0' se muestre como "+00" , no simple "00". – LukeH

+0

@LukeH Tiene razón, mi error, la respuesta modificada para reflejar esto. –

Cuestiones relacionadas