2014-09-08 17 views
5

voglio formattare qualsiasi numero (intero o reale) per una rappresentazione di stringa che sempre ha un segno (positivo o negativo) ed un separatore decimale, ma senza zero finali.formato un numero per avere sempre un segno e separatore decimale

Alcuni esempi:

3.14 => +3.14 
12.00 => +12. 
-78.4 => -78.4 
-3.00 => -3. 

E 'possibile con uno dei predefiniti ToString() implementazioni, o ho bisogno scrivere questo me stesso?

+1

Non esiste un modo già implementato per visualizzare un separatore decimale seguito da n othing (AFAIK). Quindi devi implementarlo su te stesso. – Oliver

risposta

7

provare qualcosa di simile:

double x = -12.43; 
string xStr = x.ToString("+0.#####;-0.#####"); 

Ma questo non aiuterebbe a visualizzare finali punto decimale. È possibile gestire tali situazioni con questo metodo:

public static string MyToString(double x) 
{ 
    return x == Math.Floor(x) 
     ? x.ToString("+0;-0;0") + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator 
     : x.ToString("+0.####;-0.####"); 
} 
+0

Probabilmente la migliore risposta ancora. Ma, sento che non possiamo forzare il punto decimale se non sono zero finali. –

+0

Ok, ora funziona esattamente come voglio! Grazie! –

+1

Supponendo che questo sia un metodo di estensione, manca la parola chiave 'this'. ad esempio 'stringa statica pubblica MyToString (questa doppia x)' –

0

si può provare in questo modo:

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

Questo non visualizza le cifre dopo il separatore decimale. – Dmitry

0

La stringa di formato che si desidera utilizzare è

ToString("N", CultureInfo.InvariantCulture) // Displays -12,445.68 

Vedi here per le opzioni aggiuntive per stringhe di formato

+0

Questo non visualizza il punto decimale finale se non ci sono zero finali. – Nzall