web-dev-qa-db-ja.com

常に記号を表示するカスタム数値形式文字列

+ veまたは-veのように、常に符号を出力する標準またはカスタムの数値形式文字列を指定する方法はありますか(ゼロに対して何をすべきかはわかりませんが!)

171
Craig Shearer

はい、できます。条件付き書式があります。 MSDNの条件付き書式設定 を参照してください

例えば:

string MyString = number.ToString("+0;-#");

セミコロンで区切られた各セクションは、正の数と負の数を表します

または:

string MyString = number.ToString("+#;-#;0");

ゼロにプラス記号を付けたくない場合。

274
gcores

条件付き書式を使用する場合、負の値は自動的に符号を取得しないことに注意してください。あなたがする必要があります

string MyString = number.ToString("+#;-#;0");
54
Luk

String.Format()でフォーマット文字列を使用することもできます。書式文字列は、コロン( ':')でインデックスと区切られています

var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);

数値{+ 1、-1、0}の場合、次のようになります。

1、強制符号+1、ゼロの符号なし+1
-1、強制符号-1、ゼロの符号なし-1
0、強制符号+0、ゼロ0の符号なし

string.Formatの代わりに補間された文字列を使用して、同じ結果を取得することもできます。

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
26
Edward

他の答えとは反対に、+ 1、-1、+ 0(引数1、-1、0)を取得するには、次の形式を使用する必要があるようです。

String.Format("{0:+#;-#;+0}", 0));  // output: +0

または

String.Format("{0:+0;-#}", 0));  // output: +0

+#;-#のみを使用すると、0に対して++0ではなく)のみが表示されます。

「#」カスタム指定子(at https://msdn.Microsoft.com/en-us/library/0c899ak8.aspx

この指定子は、ストリング内の唯一の数字がゼロであっても、有効数字ではないゼロを表示しないことに注意してください。表示されている数字の有効数字である場合にのみ、ゼロが表示されます。

また、10進精度が必要な場合は、次のように指定する必要があることに注意してください。

String.Format("{0:+0.##;-#.##}", 0));  // output: +0

または、常にゼロを表示したくない場合は、次のようにします。

String.Format("{0:+0.00;-#.00}", 0));  // output: +0.00
8
Kamil Szot

任意のタイプの数値式の場合:

+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0

3つの場合に3つの部分を使用します:positive; negative; zero

例の他の側面:

  • ゼロは署名されていません。 「ゼロ」など、何でも表示できます。

  • 絶対値が1未満の場合、小数点の前に0が付きます。好みに合わせて調整してください。

  • 桁数は、最大および最小の絶対10進数値です。好みに合わせて調整してください。

  • 小数点文字は文化固有のものです。 .NETの代替。

  • グループ化セパレーターはオプションです。キャラクターは文化固有のものです。 .NETの代替。 (位置もカルチャ固有ですが、それは書式文字列によってのみ制御されます。)また、書式用の特殊文字(、。#0を含む)以外の文字を使用します。

0
Tom Blodget