force a string to 2 decimal places

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?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 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

Method 2

You can use:

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

Method 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}")%>

Method 4

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

Method 5

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

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


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x