Domanda

Esiste un modo in cui posso specificare una stringa di formato numerico standard o personalizzata per generare sempre il segno, sia esso + ve o -ve (anche se cosa dovrebbe fare per zero, non sono sicuro!)

È stato utile?

Soluzione

Sì, puoi. C'è una formattazione condizionale. Vedi Formattazione condizionale in MSDN

ad esempio:

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

Dove ogni sezione separata da un punto e virgola rappresenta numeri positivi e negativi

o

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

se non si desidera che lo zero abbia un segno più.

Altri suggerimenti

Attenzione, quando si utilizza la formattazione condizionale il valore negativo non ottiene automaticamente un segno. Devi fare

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

Puoi anche usare stringhe di formato in string.Format (); la stringa di formato è separata dall'indice con due punti (':')

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

Per il numero {+1, -1, 0} questo indica:

  

1, Forza il segno +1, Nessun segno per zero +1
  -1, Forza segno -1, Nessun segno per zero -1
  0, Forza segno +0, Nessun segno per zero 0

Puoi anche usare una stringa interpolata invece di string.Format per ottenere lo stesso risultato:

var f = <*>quot;{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";

Contrariamente alle altre risposte sembra che se si desidera ottenere +1, -1, +0 (per gli argomenti 1, -1, 0) è necessario utilizzare il formato:

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

o

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

Se usi solo + #; - # verrà visualizzato solo + (non +0 ) per 0.

Il " # " Identificatore personalizzato (all'indirizzo https://msdn.microsoft.com/en-us/library/ 0c899ak8.aspx )

  

Nota che questo identificatore non visualizza mai uno zero che non sia una cifra significativa, anche se zero è l'unica cifra nella stringa. Verrà visualizzato zero solo se è una cifra significativa nel numero visualizzato.

Inoltre, tieni presente che se hai bisogno di una precisione decimale devi specificarla in questo modo:

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

oppure, se non vuoi che gli zeri vengano visualizzati sempre, in questo modo:

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

Per un'espressione numerica di qualsiasi tipo:

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

Usa tre parti per tre casi: positivo; negativo; zero

Altri aspetti dell'esempio:

  • Lo zero non è firmato. Potresti vederlo come qualsiasi cosa, come " zero " ;.

  • I valori assoluti inferiori a uno hanno uno 0 iniziale prima del punto decimale. Adatta a tuo gusto.

  • Il numero di cifre indica i valori decimali assoluti più grandi e più piccoli. Adatta a tuo gusto.

  • Il carattere del punto decimale è specifico della cultura. Sostituti .NET.

  • I separatori di raggruppamento sono facoltativi. Il personaggio è specifico per la cultura. Sostituti .NET. (Le posizioni sono anche specifiche della cultura ma sono controllate solo dalla stringa del formato.) Puoi anche usare qualsiasi altro carattere tranne i caratteri speciali per Formato (che includono, # 0).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top