j'ai un élément répéteur qui affiche un double. de temps en temps le double semble sortir avec 3 décimales comme celui-ci 1165.833. im essayant de le forcer à deux décimales en l'enveloppant dans une méthode string.format mais il sort toujours le même:
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
des idées pourquoi?
String
n'implémente tout simplement pas IFormattable
. Pour utiliser la mise en forme, supprimez .ToString () afin de ne pas passer de chaîne.
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange"))%>
Pour voir cela plus explicitement, exécutez ce code:
Console.WriteLine(string.Format("{0:f2}", "123.888"));
Console.WriteLine(string.Format("{0:f2}", 123.888));
qui sort
123.888
123.89
Vous pouvez utiliser:
String.Format("{0:0.00}",value);
Basé sur MSDN, vous devriez pouvoir exprimer le masque de format dans l'appel à DataBinder.Eval
.
http://msdn.Microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx
Donc, essentiellement, vous devriez pouvoir le faire - et ne forcer que 2 décimales à afficher:
<%# DataBinder.Eval(Container.DataItem, "pricerange", "{0:##0.00}")%>
Essayez de ne pas appeler ToString()
sur la sortie de la méthode Eval
- vous ne pouvez pas formater une chaîne avec des chaînes de formatage numérique.
simple: DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")
plus @ http://msdn.Microsoft.com/pt-br/library/dwhawy9k (v = vs.110) .aspx # CFormatString