将字符串强制为2位小数

我有一个显示双重的转发器项目。 偶尔双重似乎出现了像小编这样的1165.833。 我试图通过将其包装在string.format方法中来强制它到两位小数,但它仍然是相同的:

 

任何想法为什么?

String只是没有实现IFormattable 。 要使用格式,请删除.ToString(),以便不传入String。

 <%# 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 

您可以使用:

 String.Format("{0:0.00}",value); 

基于MSDN,您应该能够在对DataBinder.Eval的调用中表达格式掩码。
http://msdn.microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx

所以基本上你应该能够这样做 – 并强制只显示2位小数:

 <%# DataBinder.Eval(Container.DataItem, "pricerange", "{0:##0.00}")%> 

尽量不要在Eval方法的输出上调用ToString() – 您不能使用数字格式字符串格式化字符串。

simple: DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")

更多@ http://msdn.microsoft.com/pt-br/library/dwhawy9k(v=vs.110).aspx#CFormatString