7

float を通貨として表示する DataFormatString を探しています。ただし、10 進値が無関係 (0) の場合は省略してください。

現時点で私は使用しています:

[DisplayFormat(DataFormatString = "{0:C}")]

私のモデルについて。これは通貨として正しく表示されています。小数点以下を省略するためにどのような変更を加える必要があるかを詳しく説明している場所を見つけることができませんでしたか?

4

3 に答える 3

9
[DisplayFormat(DataFormatString = "{0:C0}")]

これにより、小数点以下が0になります。しかし、自動的に丸めます!,56 を取得した場合は 1 に切り上げられます

20000,00 => 20000 €</p>

20000,56 => 20001 €</p>

20000,49 => 20000 €</p>

/編集: ここからアイデアを借りました: c# Decimal to string for currency

float 値を 10 進数に変換できる場合は、この Extensionmethod を使用して 0 を省略できます。10 進数を切り捨て、切り捨てられた値が元の値と等しい場合はゼロを切り捨てます。そうでない場合は、2 桁で表示されます。これが Dataformat 文字列ではないことはわかっていますが、よくわかりません。注釈と同じくらい簡単な方法で実行できます。

public static string ToCurrencyString(this decimal d)
{
    return d.Equals(Decimal.Truncate(d)) ? d.ToString("0 €") : d.ToString("0.00 €");
}
于 2013-11-05T22:39:45.120 に答える
3

通貨の書式設定を明示的に使用する方法はないと思いますが、次の#文字を使用してカスタムの書式設定を使用できます: http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

これは米国通貨で機能するはずです。

[DisplayFormat(DataFormatString = "{0:$#.##}")]

文字は、#必要な場合にのみ数字を表します。

于 2013-11-05T22:38:43.757 に答える
0
var price = 100.0M;
var curr = price % 1 == 0 ? price.ToString("C0") : price.ToString("C");

これを拡張メソッドに入れて、必要な場所で呼び出すことができます。

于 2013-12-05T14:55:37.090 に答える