2012-03-17 6 views
14

Ho un problema tecnico con l'utilizzo della percentuale nel metodo StringFormat.Percentuale in StringFormat

Il risultato di String.Format("{0:P}", 0.8526) è 85.26%

ma penso che dovrebbe essere 0.8526%

E 'corretto? Se sì, come posso ottenere 0.8526%?

+4

String.Format ("{0}%", 0,8526) – Steve

risposta

17

Console.WriteLine(string.Format("{0}%", 0.8526));

12

Sì matematicamente 0,8526 è pari a 85,26%. Se avete bisogno di ottenere 0,8526% quindi provare questo

String.Format("{0:P}", 0.8526/100) 
+0

voglio usare DataFormatString in griglia. come posso implementare dividendo lì? – Mironline

+0

Nel tuo caso non hai nemmeno bisogno di dividere. se hai bisogno di '0.8526' come' 0.8526% ', allora perché non aggiungi'% 'al numero? "" 0.8526% "= 0.8526.ToString() +"% "'. questo aiuta? – Kaf

+4

-1 Perché dividere e moltiplicare dello stesso importo? Solo output {0}% –

2

String.Format sarà moltiplicare per 100 quando si utilizza% o: p String.Format Si dovrebbe dividere per 100 prima se si vuole ottenere ciò che si sta cercando.

+3

-1 Perché dividere e moltiplicare dello stesso importo? Invia solo {0}% –

+6

@Chris perché String.Format terrà conto delle regole della cultura corrente per la formattazione di un valore percentuale mentre {0}% è hard-coding per lo standard US-EN. –

+0

È come un hard-coding per una cultura specifica, ma non proprio. Il doppio verrà formattato implicitamente utilizzando l'identificatore di formato G. Ignorando completamente il simbolo percentuale, l'identificatore di formato G formatta i numeri in modo diverso da P, principalmente in quanti decimali vengono visualizzati per impostazione predefinita. Dovresti solo leggere su G e P su https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx. – user1676558

2

Una percentuale viene considerata da 0-100% e il numero di puntatore mobile correlato da 0.0-1.0 in quanto è un rapporto tra due numeri.