separador numero miles formato c# string-formatting

miles - formato numero c#



¿Cómo formatear un número como porcentaje sin el signo de porcentaje? (9)

¡Pero multiplicar por 100 es exactamente lo que quieres!

protected void myGrdiView_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { myObjectType ot = (myObjectType)e.Row.DataItem; ot.myNumber = ot.myNumber * 100; // multiply by 100 } }

y en el HTML

<asp:BoundField DataType="myNumber" HeaderText="%" StringFormat="{0:N0}" />

¿Cómo en formato .NET un número como porcentaje sin mostrar el signo de porcentaje?

Si tengo el número 0.13 y uso la cadena de formato {0:P0} la salida es del 13 % .

Sin embargo, me gustaría obtener 13 , sin tener que multiplicar el número por 100 y usar la cadena de formato {0:N0} .

(Antecedentes: en ASP.NET tengo un GridView con un BoundField donde me gustaría mostrar un número como porcentaje pero sin el signo de porcentaje (%). ¿Cómo hago eso?)

Gracias por las respuestas. En el momento de la edición, 4 de 6 sugieren lo que me gustaría evitar, como se explicó anteriormente. Estaba buscando una forma de usar solo una cadena de formato, y evitar multiplicar por 100 y usar {0:N0} , pero las respuestas indican que eso es imposible ...

Resuelto mediante el uso de la solución aceptada por Richard :

public class MyCulture : CultureInfo { public MyCulture() : base(Thread.CurrentThread.CurrentCulture.Name) { this.NumberFormat.PercentSymbol = ""; } } Thread.CurrentThread.CurrentCulture = new MyCulture();


¿Por qué no multiplica el número por 100 y usa su cadena de formato "{0:N0}" ? Esa me parece la solución más fácil.

A menos que pueda encontrar una razón viable por la que eso sea imposible, ese es mi consejo. No es una ciencia exacta :-)


¿Qué tal un recorte?

double d = .102; string percent = d.ToString("P0").Trim('' '', ''%'');


Aquí hay un ejemplo que usa NumberFormatInfo como @Richard sugirió:

string.Format(new NumberFormatInfo { PercentSymbol = string.Empty }, "{0:0%}", 0.123); // => 12


Defina una cultura personalizada con su propio NumberFormatInfo que devuelve String.Empty para su propiedad PercentSymbol .

Luego use esa cultura personalizada para las páginas impactadas (o para toda la aplicación). Esto se puede hacer mediante la clonación del valor predeterminado para que se conserven otras configuraciones regionales.


El MSDN * tiene esto bajo "Cadenas de formato numérico personalizado":

La presencia de un carácter ''%'' en una cadena de formato hace que un número se multiplique por 100 antes de que se formatee. El símbolo apropiado se inserta en el número mismo en la ubicación donde aparece el ''%'' en la cadena de formato. El porcentaje de caracteres utilizado depende de la clase NumberFormatInfo actual.

¿Pero el ejemplo muestra que también genera el signo%, no lo que desea, pero tal vez no se puede configurar a través de la clase NumberFormatInfo?

Sin embargo, estoy de acuerdo con Pax y no puedo ver por qué no se va con * 100 y {0: N0}

** Accediendo desde dentro de Visual Studio así que no hay enlace *


Los puntos a considerar primero, un porcentaje que se muestra sin un% es un número, así que ignoremos el aspecto del porcentaje. Desea saber cómo mostrar un número que es 1 o menos como 100 o menos. Aprecio que esté enlazado, así que no puede modificarlo en el momento de la visualización, ¿por qué no modificarlo en el momento de la consulta, es decir, SELECCIONAR (valor * 100) AS Porcentaje, ...?


Qué tal esto...

String.Format("{0:P0}",0.13).Replace("%","")

EDITAR: Esto debería funcionar a través de las culturas:

var percentSymbol = CultureInfo.CurrentCulture.NumberFormat.PercentSymbol; String.Format("{0:P0}",0.13).Replace(percentSymbol,"")

También existe esta solución que puede ser más elegante pero un poco más de código.


También puedes probar algo como

string newString = "0.13".Replace("0.", string.Empty) + "%";