将字符串强制为2位小数

phi*_*ili 23 c# asp.net double repeater

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

<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?

Dav*_*tka 64

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

<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange"))%>
Run Code Online (Sandbox Code Playgroud)

要更明确地看到这一点,请运行以下代码:

Console.WriteLine(string.Format("{0:f2}", "123.888"));
Console.WriteLine(string.Format("{0:f2}", 123.888));
Run Code Online (Sandbox Code Playgroud)

哪个输出

123.888
123.89
Run Code Online (Sandbox Code Playgroud)


小智 14

您可以使用:

String.Format("{0:0.00}",value);
Run Code Online (Sandbox Code Playgroud)

  • 您还可以在c#6+ $“ {myDoubleVar:f2}”中使用插值字符串 (2认同)

cod*_*ife 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}")%>
Run Code Online (Sandbox Code Playgroud)