ダブルを表示するリピーター項目があります。時々、この1165.833のような小数点以下3桁で倍精度が出てくるようです。 string.formatメソッドでラップすることにより、小数点以下2桁まで強制しようとしていますが、それでも同じです。
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
何かアイデアはありますか?
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
次を使用できます。
String.Format("{0:0.00}",value);
MSDNに基づいて、DataBinder.Eval
の呼び出し内でフォーマットマスクを表現できるはずです。
http://msdn.Microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx
したがって、基本的にこれを行うことができるはずです-そして、表示する小数点以下2桁のみを強制します。
<%# DataBinder.Eval(Container.DataItem, "pricerange", "{0:##0.00}")%>
Eval
メソッドの出力でToString()
を呼び出さないようにしてください-文字列を数値フォーマット文字列でフォーマットすることはできません。
シンプル:DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")
もっと@ http://msdn.Microsoft.com/pt-br/library/dwhawy9k(v = vs.110).aspx#CFormatString