force une chaîne à 2 décimales
J'ai un élément répéteur qui affiche un double. parfois, le double semble sortir avec 3 décimales comme ceci 1165.833. j'essaie de le forcer à deux décimales en l'enveloppant dans une chaîne.méthode de format mais il sort toujours le même:
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
Des idées pourquoi?
5 réponses
String
n'implémente tout simplement pas IFormattable
. Pour utiliser le formatage, supprimer .ToString () de sorte que vous ne passez pas une 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 génère
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 être capable de le faire - et forcer seulement 2 décimales pour montrer:
<%# 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