1

次のシナリオがあります。小数値は通貨として表示する必要がありますが、適切な通貨記号と記号を含める必要があります。したがって、次のようになります。

  1. -45.23 は -£45.23 と表示されます
  2. 45.23 は +£45.23 と表示されます

通貨記号はSystem.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol. 私はこれを持っていますが、記号と通貨記号を入れ替える方法が見つかりません:

string s1 = string.Format(@"{1}{0:+#,##0.00;-#,##0.00}", 45.09M, 
    System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s2);
string s2 = string.Format(@"{1}{0:+#,##0.00;-#,##0.00}", -45.09M, 
    System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s2);

出力:

£+45.09
£-45.09

私が欲しい:

+£45.09
-£45.09

アップデート

誰かがプロパティに関する別の回答を投稿しましたNumberFormatInfo.CurrencyPositivePatternが、これは有望に見えましたが、Microsoft はNumberFormatInfo.CurrencyNegativePatternプロパティに負の記号を表示するためのさまざまなオプションが含まれている可能性を見落としていたようです。ただし、 にNumberFormatInfo.CurrencyPositivePatternは正符号を含めるオプションが含まれていません。くそ。それについて言及したが、コメントを削除した人に感謝します。それにもかかわらず、私は誰かを学びました。

4

2 に答える 2

3

私がこれを投稿したとき、答えは2つではなく3つのステップでこれを行うことであることに気づきました。

string s1 = string.Format(@"{0:+;-}{1}{0:#,##0.00;#,##0.00}", 45.09M, System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s1);

string s2 = string.Format(@"{0:+;-}{1}{0:#,##0.00;#,##0.00}", -45.09M, System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
Console.WriteLine(s2);

出力:

+£45.09
-£45.09
于 2012-10-16T14:07:07.420 に答える
1

あなたstring.Format明示的に+/-を前に置いています。

操作を 2 つのステップに分割すると、より簡単になります。最初に currentcy シンボルを挿入してから、番号をフォーマットします。

string fmt = string.Format(@"{{0:+{0}#,##0.00;-{0}#,##0.00}}",  
    System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);
string s1 = string.Format(fmt, 45.09M);
Console.WriteLine(s1); 
string s2 = string.Format(fmt, -45.09M);
Console.WriteLine(s2); 
于 2012-10-16T14:25:34.390 に答える