web-dev-qa-db-ja.com

文字列を小数点以下2桁に強制します

ダブルを表示するリピーター項目があります。時々、この1165.833のような小数点以下3桁で倍精度が出てくるようです。 string.formatメソッドでラップすることにより、小数点以下2桁まで強制しようとしていますが、それでも同じです。

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

何かアイデアはありますか?

23
phili

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
63
David Ruttka

次を使用できます。

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

MSDNに基づいて、DataBinder.Evalの呼び出し内でフォーマットマスクを表現できるはずです。
http://msdn.Microsoft.com/en-us/library/2d76z3ck%28VS.90%29.aspx

したがって、基本的にこれを行うことができるはずです-そして、表示する小数点以下2桁のみを強制します。

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

Evalメソッドの出力でToString()を呼び出さないようにしてください-文字列を数値フォーマット文字列でフォーマットすることはできません。

3
Femaref

シンプル:DataBinder.Eval(Container.DataItem, "pricerange").ToString("C2")

もっと@ http://msdn.Microsoft.com/pt-br/library/dwhawy9k(v = vs.110).aspx#CFormatString

0
Rodrigo Reis