force a string to 2 decimal places

后端 未结 5 1762
广开言路
广开言路 2020-12-17 09:19

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

相关标签:
5条回答
  • 2020-12-17 10:14

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

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

    0 讨论(0)
  • 2020-12-17 10:19

    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
    
    0 讨论(0)
  • 2020-12-17 10:20

    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}")%>
    
    0 讨论(0)
  • 2020-12-17 10:22

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

    0 讨论(0)
  • 2020-12-17 10:24

    You can use:

    String.Format("{0:0.00}",value);
    
    0 讨论(0)
提交回复
热议问题