Принудительная строка до 2 знаков после запятой
У меня есть элемент ретранслятора, который отображает двойной. иногда двойной, кажется, выходит с 3 десятичными знаками, такими как 1165.833. im пытается заставить его до двух десятичных знаков, обернув его в метод string.format, но он все равно выглядит следующим образом:
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
любые идеи, почему?
Ответы
Ответ 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
- вы не можете форматировать строку с строками форматирования номера.
Ответ 5
simple: DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")
далее @http://msdn.microsoft.com/pt-br/library/dwhawy9k(v=vs.110).aspx#CFormatString