String.Format("{0:C2}", -1234)
数値の書式設定に使用しています。
$ - 1234になりたいのですが、常に金額を正の数値にフォーマットします
String.Format("{0:C2}", -1234)
数値の書式設定に使用しています。
$ - 1234になりたいのですが、常に金額を正の数値にフォーマットします
かっこで囲んでいる、つまり としてフォーマットしていると言っているのは正しい($1,234.00)
ですか?もしそうなら、それは米国の意図した行動だと思います。
ただし、NumberFormatInfo
このように動作しない独自のものを作成できます。NumberFormatInfo
「ほぼ正しい」既存のものを取得し、呼び出しClone()
て変更可能なコピーを作成し、CurrencyNegativePattern
適切に設定します(値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);
}
もう1つの簡単なオプションは、フォーマット文字列を手動で指定することです。
String.Format("{0:$#,##0.00}", -1234)
または、通貨記号をパラメータにする必要がある場合は、これを行うことができます
String.Format("{0:" + symbol + "#,##0.00}", -1234)
私は単に使用すると思います:
FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False)
(Microsoft.VisualBasic.Strings モジュール内)
または短い言葉で(これは実際に使用するものです):
FormatCurrency(-1234.56, 2, 0, 0)
または、カスタム パラメータを渡す VB 関数を使用するカスタム formatcurrency 関数を作成します。
詳細については、msdn のFormatCurrency 関数 (Visual Basic)を参照してください。