数値のフォーマットにString.Format("{0:C2}", -1234)
を使用しています。
それは常に金額を正の数にフォーマットしますが、それが$ - 1234になりたいです
私は単に使用すると思います:
FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False)
(Microsoft.VisualBasic.Stringsモジュール内)
または短い言葉で(これは私が実際に使用するものです):
FormatCurrency(-1234.56, 2, 0, 0)
または、私は自分のカスタムパラメータを渡すVB関数を使用するカスタムformatcurrency関数にします。
詳細については、msdnの FormatCurrency Function(Visual Basic) を参照してください。
私はそれを角括弧で囲んでいる、つまり_($1,234.00)
_としてフォーマットしていると言っていいのですか?もしそうなら、私はそれが米国の意図された行動だと信じています。
ただし、このように動作しない独自のNumberFormatInfo
を作成できます。 「ほぼ正しい」既存のNumberFormatInfo
を取得し、Clone()
を呼び出して変更可能なコピーを作成し、次に CurrencyNegativePattern
を適切に設定します(I値が欲しいと思う2)。
例えば:
_using System;
using System.Globalization;
class Test
{
static void Main()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
string formatted = string.Format(clonedNumbers, "{0:C2}", -1234);
Console.WriteLine(formatted);
}
}
_
これは$ -1,234.00を出力します。実際に$ -1234が必要な場合は、 CurrencyGroupSizes
プロパティを_new int[]{0}
_に設定し、_"{0:C0}"
_の代わりに_"{0:C2}"
_を使用する必要があります。フォーマット文字列として。
編集:基本的に同じことをするあなたが使用できるヘルパーメソッドはここにあります:
_private static readonly NumberFormatInfo CurrencyFormat = CreateCurrencyFormat();
private static NumberFormatInfo CreateCurrencyFormat()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
return clonedNumbers;
}
public static string FormatCurrency(decimal value)
{
return value.ToString("C2", CurrencyFormat);
}
_
別の簡単なオプションは、フォーマット文字列を手動で指定することです。
String.Format("{0:$#,##0.00}", -1234)
または、通貨記号をパラメータにする必要がある場合は、これを行うことができます
String.Format("{0:" + symbol + "#,##0.00}", -1234)