c# number - Cadena de formato numérico personalizado para mostrar siempre el signo




moneda string.format (5)

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.

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


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

BinaryFormatter bf = new BinaryFormatter();
byte[] bytes;
MemoryStream ms = new MemoryStream();

string orig = "喂 Hello 谢谢 Thank You";
bf.Serialize(ms, orig);
ms.Seek(0, 0);
bytes = ms.ToArray();

MessageBox.Show("Original bytes Length: " + bytes.Length.ToString());

MessageBox.Show("Original string Length: " + orig.Length.ToString());

for (int i = 0; i < bytes.Length; ++i) bytes[i] ^= 168; // pseudo encrypt
for (int i = 0; i < bytes.Length; ++i) bytes[i] ^= 168; // pseudo decrypt

BinaryFormatter bfx = new BinaryFormatter();
MemoryStream msx = new MemoryStream();            
msx.Write(bytes, 0, bytes.Length);
msx.Seek(0, 0);
string sx = (string)bfx.Deserialize(msx);

MessageBox.Show("Still intact :" + sx);

MessageBox.Show("Deserialize string Length(still intact): " 
    + sx.Length.ToString());

BinaryFormatter bfy = new BinaryFormatter();
MemoryStream msy = new MemoryStream();
bfy.Serialize(msy, sx);
msy.Seek(0, 0);
byte[] bytesy = msy.ToArray();

MessageBox.Show("Deserialize bytes Length(still intact): " 
   + bytesy.Length.ToString());






c# .net formatting string-formatting