Formato decimal para valores de porcentaje?


206

Lo que quiero es algo como esto:

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

Donde %% es ese proveedor de formatos o lo que sea que esté buscando. Debería resultar:Value: %85.26. .

Básicamente lo necesito para el enlace wpf, pero primero solucionemos el problema general de formato:

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

Respuestas:



11

Si tiene una buena razón para dejar de lado el formato dependiente de la cultura y obtener un control explícito sobre si hay o no un espacio entre el valor y el "%", y si el "%" está al principio o al final, puede usar el PercentPositivePattern de NumberFormatInfo y Porcentaje Negativo Patrón propiedades.

Por ejemplo, para obtener un valor decimal con un "%" final y sin espacio entre el valor y el "%":

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

Ejemplo más 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

Si desea utilizar un formato que le permita mantener el número como su entrada, este formato me funciona: "# \\%"


2

Este código puede ayudarlo a:

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

-8

He encontrado que la respuesta anterior es la mejor solución, pero no me gusta el espacio inicial antes del signo de porcentaje. He visto soluciones algo complicadas, pero solo uso esta adición de Reemplazar a la respuesta anterior en lugar de usar otras soluciones de redondeo.

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

Y aún así, si desea forzar tanto esa entrada, podría poner el número como flotante y agregar el signo de porcentaje, ya que reemplazar es costoso y en este caso no es muy útil "String.Format (" Valor: {0: F2} . ", 0.8526 * 100)"
rekiem87
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.