web-dev-qa-db-ja.com

表示する通貨形式

国を表す正しい通貨をフォーマットするライブラリはありますか?

例英国-£127.54オランダ€127,54-米国$ 127.54

等..

考慮すべき事項

  1. 通貨記号

  2. 通貨記号の配置-数字の前または後に配置できます。

  3. マイナス表示

46
001

通貨フォーマット指定子 ( "C")を試してください。現在のUIカルチャを自動的に考慮し、それに応じて通貨値を表示します。

String.Format または数値型のオーバーロードToStringメソッド。

例えば:

double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));

Console.WriteLine(value.ToString("C3", CultureInfo.CreateSpecificCulture("da-DK")));

// The example displays the following output on a system whose
// current culture is English (United States):
//       $12,345.68
//       $12,345.679
//       kr 12.345,679
85
Cody Gray

この種の機能は組み込まれています。

10進数を使用する場合は、 フォーマット文字列 "C"または "c"を使用できます。

decimal dec = 123.00M;
string uk = dec.ToString("C", new CultureInfo("en-GB")); // uk holds "£123.00"
string us = dec.ToString("C", new CultureInfo("en-US")); // us holds "$123.00"
29
Oded

string.Format("{0:c}", value)を使用できます。

こちらもご覧ください:

18
Martin Buberl

指定された数値を取得して.ToString( "C"、culture)で表示する場合の問題は、指定されたカルチャのデフォルト通貨に金額を効果的に変更することです。特定の金額とその金額のISO通貨コードがあり、特定のカルチャに対してそれを表示する場合は、次のような10進数の拡張メソッドを作成することをお勧めします。これは、通貨がカルチャのデフォルト通貨であることを自動的に想定しません。

public static string ToFormattedCurrencyString(
    this decimal currencyAmount,
    string isoCurrencyCode,
CultureInfo userCulture)
{
    var userCurrencyCode = new RegionInfo(userCulture.Name).ISOCurrencySymbol;

    if (userCurrencyCode == isoCurrencyCode)
    {
        return currencyAmount.ToString("C", userCulture);
    }

    return string.Format(
        "{0} {1}", 
        isoCurrencyCode, 
        currencyAmount.ToString("N2", userCulture));
}

これは、現地通貨記号またはISO通貨コードと金額のどちらか適切な方を使用します。トピックの詳細 このブログ投稿

6
jakejgordon
3
barlop

通貨記号と小数点以下の桁数だけがある場合は、通貨記号自体と表示する小数点以下の桁数のみを変更して、記号/金額の順序、区切り記号などを尊重する次のヘルパー関数を使用できます。

public static string FormatCurrency(string currencySymbol, Decimal currency, int decPlaces)
{
    NumberFormatInfo localFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
    localFormat.CurrencySymbol = currencySymbol;
    localFormat.CurrencyDecimalDigits = decPlaces;
    return currency.ToString("c", localFormat);
}
2
Clint Good