Cadena de formato numérico personalizado para mostrar siempre el signo

¿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.

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

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

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.

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 

Para una expresión numérica de cualquier tipo:

 +###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0 

Use tres partes para tres casos: positivo; negativo; cero

Otros aspectos del ejemplo:

  • Zero no está firmado. Puede hacer que se muestre como cualquier cosa, como “cero”.

  • Los valores absolutos menores que uno tienen un 0 inicial antes del punto decimal. Ajustar al gusto.

  • El número de dígitos corresponde a los valores decimales absolutos más grandes y más pequeños. Ajustar al gusto.

  • El carácter del punto decimal es específico de la cultura. .NET sustitutos.

  • Los separadores de agrupamiento son opcionales. El personaje es específico de la cultura. .NET sustitutos. (Las posiciones también son específicas de la cultura, pero eso solo se controla con la cadena de formato). También utiliza cualquier otro carácter excepto los caracteres especiales para Formato (que incluyen,. # 0).