заставить строку до 2 десятичных знаков - PullRequest
23 голосов
/ 02 марта 2011

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

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

есть идеи, почему?

Ответы [ 5 ]

63 голосов
/ 02 марта 2011

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
14 голосов
/ 20 ноября 2012

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

String.Format("{0:0.00}",value);
8 голосов
/ 02 марта 2011

На основе 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 голосов
/ 02 марта 2011

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

0 голосов
/ 26 сентября 2014

просто: DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")

больше @ http://msdn.microsoft.com/pt-br/library/dwhawy9k(v=vs.110).aspx#CFormatString

...