c# - separador - Cadena de formato numérico personalizado para mostrar siempre el signo
string.format c# number (4)
Contrariamente a las otras respuestas, parece que si quieres obtener +1, -1, +0 (para los argumentos 1, -1, 0) necesitas usar el formato:
String.Format("{0:+#;-#;+0}", 0)); // output: +0
o
String.Format("{0:+0;-#}", 0)); // output: +0
Si usa simplemente +#;-#
, mostrará solo +
(no +0
) para 0.
El "#" Custom Specifier (en https://msdn.microsoft.com/en-us/library/0c899ak8.aspx )
Tenga en cuenta que este especificador nunca muestra un cero que no sea un dígito significativo, incluso si 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.
También tenga en cuenta que si necesita precisión decimal, debe especificarla así:
String.Format("{0:+0.##;-#.##}", 0)); // output: +0
o, si quiere ceros para aparecer siempre, así:
String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00
¿Hay alguna manera de que pueda especificar una cadena de formato numérico estándar o personalizada para que siempre se emita el signo, ya sea + ve o -ve (aunque no estoy seguro de qué debería hacer para cero).
Sí tu puedes. Hay un formateo condicional. Consulte Formato condicional en MSDN
p.ej:
string MyString = number.ToString("+0;-#");
Donde cada sección separada por punto y coma representa números positivos y negativos
o:
string MyString = number.ToString("+#;-#;0");
si no desea que el cero tenga un signo más.
También puede usar las cadenas de formato en string.Format (); la cadena de formato está separada del índice con dos puntos ('':'')
string MyString = string.Format("Default format {0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}.", number);
Para number = {+1, -1, 0}, esto da -
Formato predeterminado 1, signo de fuerza +1, sin signo para cero +1.
Formato predeterminado -1, signo de fuerza -1, sin signo de cero -1.
Formato predeterminado 0, signo de fuerza +0, sin signo para cero 0.
Tenga cuidado, cuando utiliza el formato condicional, el valor negativo no recibe automáticamente un signo. Necesitas hacer
string MyString = number.ToString("+#;-#;0");