2012-03-17 29 views
14

Tengo un problema técnico con el uso del porcentaje en el método StringFormat.Porcentaje en StringFormat

El resultado de String.Format("{0:P}", 0.8526) es 85.26%

pero creo que debe ser 0.8526%

¿Es correcto? Si es así, ¿cómo puedo obtener 0.8526%?

+4

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

Respuesta

17

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

12

Sí matemáticamente 0.8526 es igual a 85.26%. Si usted necesita para obtener 0,8526% entonces prueba este

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

Quiero utilizar DataFormatString en cuadrícula. ¿Cómo puedo implementar la división allí? – Mironline

+0

En su caso, ni siquiera necesita dividirse. si necesita '0.8526' como' 0.8526% ', ¿por qué no agrega'% 'al número? '" 0.8526% "= 0.8526.ToString() +"% "'. ¿Esto ayuda? – Kaf

+4

-1 ¿Por qué dividir y multiplicar por la misma cantidad? Solo salida {0}% –

2

String.Format se multiplicará por 100 cuando se utiliza% o: p String.Format Usted debe dividir por 100 primero si usted quiere conseguir lo que busca.

+3

-1 ¿Por qué dividir y multiplicar por la misma cantidad? Acaba de salir {0}% –

+6

@Chris porque String.Format tendrá en cuenta las reglas de la cultura actual para formatear un valor porcentual, mientras que {0}% codificará con arreglo al estándar US-EN. –

+0

Es como codificar duro para una cultura específica, pero no realmente. El doble se formateará implícitamente utilizando el especificador de formato G. Ignorando por completo el símbolo de porcentaje, el especificador de formato G formatea los números de manera diferente a P, principalmente en la cantidad de lugares decimales que se muestran por defecto. Debería leer acerca de G y P en https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx. – user1676558

2

Un porcentaje se considera entre 0-100% y el número de puntero flotante relacionado de 0.0-1.0 ya que es una relación entre dos números.