指定された値 = 2 または 4.00
以下のステートメントの出力
value = Convert.ToDecimal(value).ToString("C2");
値 = $2.00、または $4.00
value = 1000 の場合、出力は$1,000.00
but I require になります$1000.00
。
「$」と値の文字列連結は好みません。
var stringValue = Convert.ToDecimal(value).ToString("$0.00");
以下の@Jamesが指摘したように、これは通貨をフォーマットにハードコーディングします。形式C2
を使用すると、システムの通貨形式が使用されます。これはシステムに合わせて変更することができ (例: Windows 7 - スタート - コントロール パネル - 表示言語の変更 - 追加設定 - 通貨 - 数字のグループ化)、C2
その特定のシステムで実行しているときにカンマなしで通貨値を表示するフォーマットを許可します。
編集
現在の文化を使用するための@Jamesのすべての功績。彼の答えに対する私の唯一の変更は、をNumberFormat
削除する前に現在のカルチャ番号形式のすべてのプロパティを取得するために、現在のクローンを作成することCurrencyGroupSeparator
です。
var formatInfo = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
formatInfo.CurrencyGroupSeparator = string.Empty;
var stringValue = Convert.ToDecimal(value).ToString("C", formatInfo);
クラスを使用して、NumberFormat
必要なフォーマットのタイプを指定する必要があります。たとえば、パラメータToString
を取ります。IFormatProvider
var formatInfo = (System.Globalization.NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
formatInfo.CurrencyGroupSeparator = ""; // remove the group separator
Console.WriteLine(2.ToString("C", formatInfo));
Console.WriteLine(4.ToString("C", formatInfo));
Console.WriteLine(1000.ToString("C", formatInfo));
これにより、使用しているカルチャと一致する番号のフォーマットが維持されます。
public static class MyExtensions
{
public static string GetMoney(this decimal value, bool displayCurrency = false, bool displayPeriods = true)
{
string ret = string.Format("{0:C}", value).Substring(displayCurrency ? 0 : 1);
if (!displayPeriods)
{
ret = ret.Replace(",", string.Empty);
}
return ret;
}
}
この拡張メソッドを使用するには:
decimal test = 40023.2345M;
string myValue = test.GetMoney(displayCurrency:true, displayPeriods:false);`
整数値を $0.00 形式に変換する
整数値 = 1000; string abc = Convert.ToDecimal(Value).ToString("$0.00"); 出力は $1000.00 になります