web-dev-qa-db-ja.com

小数のプロパティを通貨にフォーマットするにはどうすればよいですか

ゲッターで値をフォーマットし、フォーマットされた通貨値を返します。

これは可能ですか、プロパティを文字列として宣言してからstring.formatを使用する必要がありますか?.

55
WingMan20-10

プロパティは必要なものをすべて返すことができますが、正しい型を返す必要があります。

private decimal _amount;

public string FormattedAmount
{
    get { return string.Format("{0:C}", _amount); }
}

質問されました...それがnull許容小数であった場合はどうなりますか?.

private decimal? _amount;

public string FormattedAmount
{
    get
    {
         return _amount == null ? "null" : string.Format("{0:C}", _amount.Value);
    }
}  
94
Robaticus

以下も機能しますが、decimalプロパティのゲッターを入れることはできません。 decimalプロパティのgetterは、書式設定が適用されない小数のみを返すことができます。

decimal moneyvalue = 1921.39m; 
string currencyValue = moneyvalue.ToString("C");
31
Russ

これを試して;

  string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234);

123423.083234を$ 1,23,423形式に変換します。

9
Mohan Gopi

String.Formatを使用できます。コードを参照してください[ How-to Geek ]:

decimal moneyvalue = 1921.39m;
string html = String.Format("Order Total: {0:C}", moneyvalue);
Console.WriteLine(html);
// Output: $1,921.39

こちらもご覧ください:

4

拡張メソッドを作成できます。ブラウザの設定に関係なく、通貨表示をロックダウンする必要があるかもしれないので、これは良い習慣だと思います。たとえば、5 000,00 $(#CanadaProblems)の代わりに、常に$ 5,000.00を表示することができます。

public static class DecimalExtensions
{
    public static string ToCurrency(this decimal decimalValue)
    {
        return $"{decimalValue:C}";
    }
}
4
Atters

C#6で文字列補間とエクスプレッションボディプロパティを使用できるようになりました。

private decimal _amount;

public string FormattedAmount => $"{_amount:C}";
2
Richie

返される形式は、宣言する戻り型によって制限されます。そのため、プロパティを文字列として宣言し、フォーマットされた値を返すことができます。 「get」には、必要なデータ取得コードを配置できます。そのため、数値にアクセスする必要がある場合は、returnステートメントを次のように入力します。

    private decimal _myDecimalValue = 15.78m;
    public string MyFormattedValue
    {
        get { return _myDecimalValue.ToString("c"); }
        private set;  //makes this a 'read only' property.
    }
1
Austin Rhymer

10進タイプにはフォーマット情報を含めることはできません。別のプロパティを作成できます。たとえば、必要なことを行う文字列型のFormattedPropertyを作成できます。

0
recursive