質問

私のアプリケーションは現在、負の数を-1として表示していますユーザーは要件を変更しました(変更のためだけです!)。次に、数値を(1)として表示する必要があります。 web.configやアプリのCultureInfoを変更するなど、アプリケーション全体で有効にできますか?番号バリデータを含むページがたくさんあるので、それを行うことの副作用はありますか?

ありがとう!

役に立ちましたか?

解決

通貨については本当に簡単です:

String.Format("{0:C}", value)

これは、システムのカルチャ情報を使用します。

データバインドされている通常の番号については、マークグローリーのサンプルを使用します。

MSDNの記事

他のヒント

文字列フォーマットを使用します。 UIの要件を満たすためにアプリケーションの構成を変更するのは手間がかかります。 SteveXは、文字列のフォーマットについて素晴らしいブログ投稿を作成しました。また、コードにのみ関連するのではなく、マークアップ(aspx)と互換性があります。

彼の投稿から:

String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);

    This will output “$1,240.00″ if passed 1243.50. It will output the 
    same format but in parentheses if the number is negative, and will
    output the string “Zero” if the number is zero.

これはまさにあなたが望むものではありませんが、近いものです。

これを確認してください。 http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

指定したスタイルの数値の文字列表現を、対応するDecimalに変換します。

常に独自のカスタムToString()メソッドを拡張メソッドとして作成できますが、前述のように、CultureInfoを使用する方がおそらく良いでしょう。ここを見てください:

http://msdn.microsoft.com /en-us/library/system.globalization.numberformatinfo.numbernegativepattern.aspx

文字列のフォーマットを行うためにブックマークされた次のページがあります: http: //idunno.org/archive/2004/14/01/122.aspx

中途半端に、答えが得られます:

String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);

他の質問に答えるために、私はapp.configを変更してグローバルにしません。他の回答に記載されている理由のためです。

String.Format(”{0:f;(f);0”, -1);

これは動作します。

DataFormatString="{0:c0}"
  • 括弧内の負の量
  • 千桁区切り-コンマ
  • $記号の前

Gridview / Datagridsにデータを表示していますか?その場合、次のようなバインドされた列ごとにフォーマットを適用できます。

<asp:BoundField DataFormatString="{##;(##)}"/>

ただし、これは整数でのみ機能します...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top