2011-03-14 4 views
11

Voglio formattare un intero i (-100 < i < 100), in modo tale che:Come forzare un segno quando si formatta un int in C#

-99 formati come "-99"
9 formati come "+09"
-1 formati come "-01"
0 formati come "+00"

i.ToString("00") 

è vicino ma non aggiunge il segno + quando l'int è positivo.

C'è un modo per farlo senza una distinzione esplicita tra i >= 0 e i < 0?

+0

vedere http://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign – Equiso

+1

Eventuali duplicati di [stringa di formato personalizzato numerico visualizza sempre il segno] (https://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign) –

risposta

28

Prova questo:

i.ToString("+00;-00;+00"); 

Quando separati da una virgola (;) la prima sezione si applica ai valori positivi e zero (0), la seconda sezione applicare a valori negativi, la terza sezione si applicherà a zero (0).

Si noti che la terza sezione può essere omessa se si desidera che lo zero sia formattato allo stesso modo dei numeri positivi. La seconda sezione può anche essere omessa se si desidera che i negativi siano formattati allo stesso modo dei positivi, ma si desideri un formato diverso per zero.

Riferimento: MSDN Custom Numeric Format Strings: The ";" Section Separator

+1

L'OP vuole che '0' sia visualizzato come "+00", non "00". – LukeH

+0

@LukeH Grazie, risolto! – squillman

+0

Sembra che 'i.ToString (" + 00; -00 ");' sia sufficiente. 0 è considerato positivo qui. – Rodolphe

3

provare qualcosa di simile:

i.ToString("+00;-00"); 

Alcuni esempi:

Console.WriteLine((-99).ToString("+00;-00")); // -99 
Console.WriteLine(9.ToString("+00;-00"));  // +09 
Console.WriteLine((-1).ToString("+00;-00"));  // -01 
Console.WriteLine((0).ToString("+00;-00"));  // +00 
4

Potreste essere in grado di farlo con una stringa di formato in questo modo ..

i.ToString("+00;-00"); 

Questo sarebbe produrre il seguente risultato.

2.ToString("+00;-00"); // +02 
(-2).ToString("+00;-00"); // -02 
0.ToString("+00;-00"); // +00 

Date un'occhiata al MSDN documentation for Custom Numeric Format Strings

+0

L'OP vuole che '0' venga visualizzato come "+00" , non semplice "00". – LukeH

+0

@LukeH Hai ragione, errore mio, risposta modificata per riflettere questo. –

Problemi correlati