2008-12-07 13 views

Respuesta

232

Sí, puedes. Hay un formateo condicional. Ver Conditional formatting in MSDN

por ejemplo:

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

donde cada sección separados por un punto y coma representa números positivos y negativos

o:

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

si no desea que el cero a tener un signo más.

+1

Se corrigió un error por el cual los negativos no obtenían un signo menos. –

+0

¡Muchas gracias! He estado revolviendo mi cabeza durante una hora para averiguar qué es el equivalente del '+' - flag de printf en C# y me has dado LA respuesta. – rbaleksandar

+4

con '+ #; - #', para el valor 0 obtengo simplemente "+", sin 0. Para mí, quiero que 0 aparezca como "+0", así que esto funciona: '+ #; - #; + 0'. –

50

Tenga cuidado, cuando se utiliza el formato condicional, el valor negativo no recibe automáticamente un signo. Debe hacer

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

Como otros señalaron, '+0; - #' le da el mismo resultado con un código más limpio. – Andrew

21

También puede usar las cadenas de formato en cadena.Formato(); la cadena de formato se separa del índice con dos puntos (':')

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

Para el número = {1, -1, 0}, esto da -
formato predeterminado 1, Fuerza signo 1, n firmar para cero +1.
Formato predeterminado -1, Forzar signo -1, No hay signo de cero -1.
Formato predeterminado 0, signo de fuerza +0, no hay signo para cero 0.

+0

La última línea de su respuesta debería decir "Formato predeterminado 0, signo de la fuerza +, no hay signo de cero 0." porque ese es el resultado real del formato '' '+ #; - #' '' para el valor 0 –

+0

Gracias, Kamil - Me lo perdí. Ahora he corregido el formato del signo de fuerza: + #; - #; + 0 (en lugar de + #; - #) – Edward

+1

Puede obtener el comportamiento del signo de fuerza con un formato más simple: '+0; - #'. :) – Andrew

5

Al contrario de las otras respuestas, parece que si quieres obtener +1, -1, +0 (para los argumentos 1, -1, 0) es necesario utilizar el formato:

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

o

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

Si utiliza simplemente +#;-# se mostrará simplemente + (no +0) para 0.

El "#" Custom Especificador (en https://msdn.microsoft.com/en-us/library/0c899ak8.aspx)

Tenga en cuenta que este especificador nunca se muestra un cero que no es una cifra significativa, incluso si el cero es el único dígito en la cadena. Mostrará cero solo si es un dígito significativo en el número que se muestra.

Además, por favor tenga en cuenta que si necesita alguna precisión decimal es necesario especificar que de esa manera:

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

o, si quieres probar ceros para mostrar siempre, al igual que:

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