13

C# で String.Format("{0:c}", somevalue) を使用しようとしていますが、ニーズを満たすように出力を構成する方法を理解するのに苦労しています。ここに私のニーズがあります:

  1. ブランクへの 0 出力
  2. 1.00 アウトプットから $1.00
  3. 10.00 アウトプットから $10.00
  4. 100.00 アウトプットから $100.00
  5. $1,000.00 への 1000.00 出力

私は String.Format("{0:c}", somevalue) を試しましたが、値がゼロの場合は $0.00 を出力しますが、これは私が望むものではありません。String.Format("{0:$0,0.00;$(0,0.00);#}", somevalue) も試しましたが、1.0 の場合は $01.00 を出力します。String.Format("{0:$0.00;$(0.00);#}", somevalue) はほとんどの場合に機能しますが、somevalue が 1000.00 の場合、出力は $1000.00 になります。

上記の 5 つのケースすべてに適合する形式はありますか? 私が読んだすべてのドキュメントは、基本的なことだけを詳しく説明しており、このタイプのシナリオには触れていません。

4

5 に答える 5

19

使用する場合

string.Format("{0:$#,##0.00;($#,##0.00);''}", value)

ゼロ値には "" が表示され、他の値も適切にフォーマットする必要があります。

于 2009-02-12T18:56:39.013 に答える
4

次のようなことを試してください:

String currency = (number == 0) ? String.Empty : number.ToString("c");
于 2009-02-12T18:38:50.647 に答える
4

すべての通貨値に対して一貫して同じデータ型を使用しているかどうかに応じて、ケースが常に満たされるようにする拡張メソッドを作成できます。たとえば、10 進数型を使用していた場合:

public static string ToCurrencyString (this decimal value)
{
  if (value == 0)
    return String.Empty;
  return value.ToString ("C");
}
于 2009-02-12T18:57:48.073 に答える
0

このデータをまとめた便利なリファレンスを次に示します: http://blog.stevex.net/string-formatting-in-csharp/

于 2009-02-12T19:08:03.103 に答える