Formato decimale per valori percentuali?


206

Quello che voglio è qualcosa del genere:

String.Format("Value: {0:%%}.", 0.8526)

Dove %% è quel provider di formati o qualunque cosa stia cercando. Dovrebbe risultare: Value: %85.26..

Fondamentalmente ne ho bisogno per l'associazione wpf, ma prima risolviamo il problema di formattazione generale:

<TextBlock Text="{Binding Percent, StringFormat=%%}" />

Risposte:



11

Se hai una buona ragione per mettere da parte la formattazione dipendente dalla cultura e ottenere il controllo esplicito se c'è uno spazio tra il valore e "%" e se "%" è in testa o in coda, puoi usare PercentPositivePattern di NumberFormatInfo e Proprietà PercentNegativePattern .

Ad esempio, per ottenere un valore decimale con "%" finale e senza spazio tra il valore e "%":

myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });

Esempio più completo:

using System.Globalization; 

...

decimal myValue = -0.123m;
NumberFormatInfo percentageFormat = new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 };
string formattedValue = myValue.ToString("P2", percentageFormat); // "-12.30%" (in en-us)

3

Se vuoi usare un formato che ti consenta di mantenere il numero come la tua voce, questo formato funziona per me: "# \\%"


2

Questo codice può aiutarti:

double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";

-8

Ho trovato la risposta sopra per essere la soluzione migliore, ma non mi piace lo spazio iniziale prima del segno di percentuale. Ho visto soluzioni un po 'complicate, ma ho appena usato questa aggiunta Sostituisci alla risposta sopra invece di usare altre soluzioni di arrotondamento.

String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)

E ancora sbagliato, se vuoi forzare così tanto quell'input potresti mettere il numero come float e aggiungere il segno di percentuale, poiché la sostituzione è costosa e in questo caso non molto utile "String.Format (" Valore: {0: F2} . ", 0.8526 * 100)"
rekiem87
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.