force a string to 2 decimal places

别等时光非礼了梦想. 提交于 2019-11-30 07:58:12

问题


i have a repeater item that displays a double. occasionally the double seems to be coming out with 3 decimal places like this 1165.833. im trying to force it to two decimal places by wrapping it in a string.format method but it still comes out the same:

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

any ideas why?


回答1:


String simply does not implement IFormattable. To use the formatting, remove .ToString() so that you aren't passing in a String.

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

To see this more explicitly, run this code:

Console.WriteLine(string.Format("{0:f2}", "123.888"));
Console.WriteLine(string.Format("{0:f2}", 123.888));

which outputs

123.888
123.89



回答2:


You can use:

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



回答3:


Based on MSDN, you should be able to express the format mask within the call to DataBinder.Eval.
http://msdn.microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx

So essentially you should be able to do this - and force only 2 decimal places to show:

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



回答4:


Try not calling ToString() on the output of the Eval method - you can't format a string with number formatting strings.




回答5:


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

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



来源:https://stackoverflow.com/questions/5168592/force-a-string-to-2-decimal-places

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!