Подтвердить что ты не робот

Принудительная строка до 2 знаков после запятой

У меня есть элемент ретранслятора, который отображает двойной. иногда двойной, кажется, выходит с 3 десятичными знаками, такими как 1165.833. im пытается заставить его до двух десятичных знаков, обернув его в метод string.format, но он все равно выглядит следующим образом:

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

любые идеи, почему?

4b9b3361

Ответ 1

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

Ответ 2

Вы можете использовать:

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

Ответ 3

На основе MSDN вы должны иметь возможность выразить маску формата в вызове DataBinder.Eval.
http://msdn.microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx

Таким образом, вы должны уметь это сделать - и заставить показывать только 2 десятичных знака:

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

Ответ 4

Не пытайтесь вызвать ToString() на выходе метода Eval - вы не можете форматировать строку с строками форматирования номера.