2012-07-27 5 views
7

プロジェクトには、組み込みの{0:C}通貨フォーマットで通貨を表示しようとする場所がたくさんあります。数値が負の数の場合は、その値をかっこで囲みます。私は代わりに否定記号を使用したい。カッコではなく、マイナス記号を使用する標準通貨フォーマットを取得できますか?

私のweb.configはautoに設定されており、en-USに解決されています。

{0:C}en-USカルチャのマイナス記号が表示されるようなグローバルなweb.configやその他の設定が理想的なソリューションですが、私はそれほど素晴らしいソリューションではありません。

+0

可能重複C#の負の通貨の数](http://stackoverflow.com/questions/3994601/globally-changing-format-of-negative-currency-numbers-in-c-sharp) – jmort253

答えて

10

私は答えの組み合わせがここだと思いますあなたが望むものにあなたを近づけるでしょう。あなたはこのような単一文化を扱う任意のコードを持っていないしたい場合は...私はあなたがあなた自身の文化を構築する必要があると考えてい

protected void Application_BeginRequest() 
{ 
    var ci = CultureInfo.GetCultureInfo("en-US"); 

    if (Thread.CurrentThread.CurrentCulture.DisplayName == ci.DisplayName) 
    { 
     ci = CultureInfo.CreateSpecificCulture("en-US"); 
     ci.NumberFormat.CurrencyNegativePattern = 1; 
     Thread.CurrentThread.CurrentCulture = ci; 
     Thread.CurrentThread.CurrentUICulture = ci; 
    } 
} 

...の[グローバルフォーマット変更のCheck this Question

1

私があなたの質問を理解する限り。

文化に応じて通貨形式を表示する必要があります。

文化固有のことを行うたびに、.NETはThread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICultureのように見えます。

ASP.NETで必要なカルチャをglobal.asax BeginRequestメソッドで設定できます。

protected void Application_BeginRequest() 
{ 
    var ci = CultureInfo.GetCultureInfo("en-US"); // put the culture you want in here 

    Thread.CurrentThread.CurrentCulture = ci; 
    Thread.CurrentThread.CurrentUICulture = ci; 
} 
8

はおそらくある正しいNumberFormatInfo.CurrencyNegativePatternを指定する必要があります。1.

Decimal dec = new Decimal(-1234.4321); 
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); 
culture.NumberFormat.CurrencyNegativePattern = 1; 
String str = String.Format(culture, "{0:C}", dec); 
Console.Write(str); 

デモ:http://ideone.com/HxSqT

出力:

-$1,234.43 
+0

私はCurrencyNegativePatternが1と思われると思います。米国では、通貨記号は右側ではなく左側になければなりません。 – Sam

+0

@Sam:それに応じて私の答えを編集しました。 –

+0

5を1に変更するのは間違いありません。 – Sam

関連する問題