2011-11-28 17 views
41

Come si formatta un valore decimale in una stringa con una singola cifra dopo la virgola/punto e gli spazi iniziali per i valori inferiori a 100?Formato del valore decimale per la stringa con spazi iniziali

Ad esempio, un valore decimale di 12.3456 deve essere emesso come " 12.3" con spazio principale singolo. 10.011 sarebbe " 10.0". 123.123 è "123.1"

Sto cercando una soluzione, che funziona con la formattazione stringa standard/custom, cioè

decimal value = 12.345456; 
Console.Write("{0:magic}", value); // 'magic' would be a fancy pattern. 

risposta

70

Questo modello {0,5:###.0} dovrebbe funzionare:

string.Format("{0,5:###.0}", 12.3456) //Output " 12.3" 
string.Format("{0,5:###.0}", 10.011) //Output " 10.0" 
string.Format("{0,5:###.0}", 123.123) //Output "123.1" 
string.Format("{0,5:###.0}", 1.123) //Output " 1.1" 
string.Format("{0,5:###.0}", 1234.123)//Output "1234.1" 
+0

Lo fa sicuramente! Grazie! :) –

+3

C'è un buon riferimento per questo? cioè cosa fa ogni parte se il mio caso d'uso è leggermente diverso. – tjrobinson

+4

@tjrobinson è tutto su MSDN: http://msdn.microsoft.com/en-us/library/0c899ak8.aspx e http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – nemesv

5
value.ToString("N1"); 

Modificare il numero per ulteriori cifre decimali.

EDIT: Missed il bit di imbottitura

value.ToString("N1").PadLeft(1); 
+0

Grazie. Ma l'uso di PadLeft non funzionerà nel mio caso, la stringa con il segnaposto {0: ...} conterrà più testo rispetto al solo valore decimale. –

+0

@Taz: Devi scrivere 'PadLeft (5) '. Il parametro è la lunghezza totale della stringa da riempire. – Jan

+0

@Jakob: Perché non puoi usare 'string.Format()'? – Jan

1

Tutti sopra soluzione farà arrotondamento dei decimali, nel caso in cui qualcuno è alla ricerca di una soluzione senza arrotondamento

decimal dValue = Math.Truncate(1.199999 * 100)/100; 
dValue .ToString("0.00");//output 1.99 
Problemi correlati