我有一个中继器项目,显示一个双。有时候这个双倍似乎会出现3个小数位,如1165.833。我尝试通过在的String.Format方法包装它迫使它到小数点后两位,但它仍然散发出来的一样:强制一个字符串到2位小数
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
任何想法,为什么?
我有一个中继器项目,显示一个双。有时候这个双倍似乎会出现3个小数位,如1165.833。我尝试通过在的String.Format方法包装它迫使它到小数点后两位,但它仍然散发出来的一样:强制一个字符串到2位小数
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
任何想法,为什么?
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));
基于MSDN
123.888
123.89
尝试不要在Eval
方法的输出上调用ToString()
- 您无法使用数字格式字符串格式化字符串。
,输出,你应该能够表达调用中的格式掩码DataBinder.Eval
。
http://msdn.microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx
所以基本上你应该能够做到这一点 - 和力只有2位小数显示:
<%# DataBinder.Eval(Container.DataItem, "pricerange", "{0:##0.00}")%>
您可以使用:
String.Format("{0:0.00}",value);
你也可以在c#6+中使用内插字符串 $“{myDoubleVar:f2}” – 2018-01-26 20:00:50
简单:DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")
更多@http://msdn.microsoft.com/pt-br/library/dwhawy9k(v=vs.110).aspx#CFormatString
这也是添加货币符号,这不是要求的一部分 – 2018-01-26 19:53:09
请指教我为什么在第二个例子,结果是** 123.89 ** string.format天花板到** 123.89 **?我想准确返回** 123.88 **。在msdn的这个链接示例中,不正确的是为什么!!? https://msdn.microsoft.com/en-us/library/75ks3aby%28v=vs.110%29.aspx – Alireza 2015-01-26 13:05:40