将字符串强制为2位小数

时间:2011-03-02 14:10:42

标签: c# asp.net double repeater

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

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

任何想法为什么?

5 个答案:

答案 0 :(得分:62)

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));

输出

123.888
123.89

答案 1 :(得分:14)

您可以使用:

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

答案 2 :(得分: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}")%>

答案 3 :(得分:3)

请勿在{{1​​}}方法的输出上调用ToString() - 您无法使用数字格式字符串格式化字符串。

答案 4 :(得分:0)

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

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