我有一个显示双重的转发器项目。偶尔双人似乎出现了3个小数位,如1165.833。我试图通过将其包装在string.format方法中来强制它到两位小数,但它仍然是相同的:
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
任何想法为什么?
答案 0 :(得分:62)
String
根本没有实现IFormattable
。要使用格式化,请删除.ToString(),以便不传入字符串。
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange"))%>
要更明确地看到这一点,请运行以下代码:
Console.WriteLine(string.Format("{0:f2}", "123.888"));
Console.WriteLine(string.Format("{0:f2}", 123.888));
输出
123.888
123.89
答案 1 :(得分:14)
您可以使用:
String.Format("{0:0.00}",value);
答案 2 :(得分:8)
基于MSDN,您应该能够在DataBinder.Eval
的调用中表达格式掩码。
http://msdn.microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx
所以基本上你应该能够这样做 - 并强制只显示2位小数:
<%# DataBinder.Eval(Container.DataItem, "pricerange", "{0:##0.00}")%>
答案 3 :(得分:3)
请勿在{{1}}方法的输出上调用ToString()
- 您无法使用数字格式字符串格式化字符串。
答案 4 :(得分:0)
简单:DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")
更多@ http://msdn.microsoft.com/pt-br/library/dwhawy9k(v=vs.110).aspx#CFormatString