2009-08-12 10 views
29

Quiero mostrar el signo de libra y el formato 0.00 es decir £ 45.00, £ 4.10. Estoy usando la siguiente declaración:Cadena de formato por CultureInfo

<td style="text-align:center"><%# Convert.ToString(Convert.ToSingle(Eval("tourOurPrice"))/Convert.ToInt32(Eval("noOfTickets")), new System.Globalization.CultureInfo("en-GB")) %></td> 

Pero no está funcionando. Cuál es el problema.

¿Alguien me puede ayudar?

Respuesta

66

utilizan la cadena de formato estándar Currency junto con el método string.Format que toma una proveedor de formato:

string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:C}", amount) 

CultureInfo puede actuar como un proveedor de formatos y también le dará el símbolo de moneda correcto para la cultura.

Su ejemplo sería el siguiente (espacio para facilitar la lectura):

<td style="text-align:center"> 
    <%# string.Format(new System.Globalization.CultureInfo("en-GB"), 
         "{0:C}", 
         Convert.ToSingle(Eval("tourOurPrice")) 
          /Convert.ToInt32(Eval("noOfTickets"))) 
    %> 
</td> 
+0

significa esto realmente funciona? Estás aplicando una cultura a una cadena, lo cual no creo que tenga ningún efecto. –

+0

@Joe: Sí, funciona - pruébalo y mira. – adrianbanks

+0

Esto es lo que probé: string foo = String.Format (new System.Globalization.CultureInfo ("en-GB"), "{0: C}", Convert.ToString (3.01)); –

2

Trate de especificar formato exacto de divisas

String.Format(...CultureInfo("en-GB"), "{0:C}".... 
3

¿Qué tal

<%# (Convert.ToSingle(Eval("tourOurPrice"))/Convert.ToInt32(Eval("noOfTickets"))).ToString("C", New System.Globalization.CultureInfo("en-GB")) %> 
1

Esto debería funcionar:

<td style="text-align:center"> 
<%# String.Format(new System.Globalization.CultureInfo("en-GB"), "{0:c}", Convert.ToSingle(Eval("tourOurPrice"))/Convert.ToInt32(Eval("noOfTickets")) %> 
</td> 
1

que quería añadir una respuesta relacionada adicional para mostrar cómo utilizar un objeto CultureInfo clonado en un string.Format() o StringBuffer.AppendFormat(). Sin embargo, en lugar de moneda, mi necesidad era formatear el designador AM/PM para la guía de estilo de mi empleador. Esto es lo que hice:

var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
culture.DateTimeFormat.AMDesignator = "a.m."; 
culture.DateTimeFormat.PMDesignator = "p.m."; 
.... 
var msg = new StringBuilder(); 
msg.AppendFormat(culture,"Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified); 

Usted puede hacer lo mismo con string.Format():

string strMsg = string.Format(culture, "Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified);