国を表す正しい通貨をフォーマットするライブラリはありますか?
例英国-£127.54オランダ€127,54-米国$ 127.54
等..
考慮すべき事項
通貨記号
通貨記号の配置-数字の前または後に配置できます。
マイナス表示
通貨フォーマット指定子 ( "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
この種の機能は組み込まれています。
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"
指定された数値を取得して.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通貨コードと金額のどちらか適切な方を使用します。トピックの詳細 このブログ投稿 。
このコード 通貨をGB(英国/英国/イングランド/£)に設定してから行を印刷します。次に通貨をUS/$に設定して行を印刷します)
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB",false);
Console.WriteLine("bbbbbbb {0:c}",4321.2);
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US",false);
Console.WriteLine("bbbbbbb {0:c}",4321.2);
表示されます
bbbbbbb £4,321.20
bbbbbbb $4,321.20
カルチャ名のリストについては、例えばen-GB en-US e.t.c.
---(http://msdn.Microsoft.com/en-us/library/system.globalization.cultureinfo(v = vs.80).aspx
通貨記号と小数点以下の桁数だけがある場合は、通貨記号自体と表示する小数点以下の桁数のみを変更して、記号/金額の順序、区切り記号などを尊重する次のヘルパー関数を使用できます。
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);
}