数値(金額)を基本通貨で格納するデータベースがあるので、2130ポンドはデータベースに2130として格納されます。その番号をすべての文化の正しい書式の通貨に変換するにはどうすればいいですか?整数を通貨に換算する
2130 - >£21.30
2130 - > $ 21.30
など
数値(金額)を基本通貨で格納するデータベースがあるので、2130ポンドはデータベースに2130として格納されます。その番号をすべての文化の正しい書式の通貨に変換するにはどうすればいいですか?整数を通貨に換算する
2130 - >£21.30
2130 - > $ 21.30
など
int valueFromDb = 2130;
decimal result = valueFromDb/100m;
string formatted = result.ToString("c");
はすぐに拡張だろmethodified:
public static class CurrencyExtensions
{
public static string AsCurrency(this int value)
{
return value.AsCurrency(CultureInfo.CurrentCulture);
}
public static string AsCurrency(this int value, CultureInfo culture)
{
decimal result = value/100m;
return result.ToString("c", culture);
}
}
今あなたがDRYierになるように:
int valueFromDb = 2130;
string formatted = valueFromDb.AsCurrency();
すべての文化が数字の後に小数点以下2桁を持っているわけではありません... –
@LeeTreveil、すべての文化が数字の後に小数点以下2桁を持っているわけではないので、小数点は何かと思われますか?あなたは2130が21.30でも、おそらく2.130または213.0または2130.00になると言っていますか? – Nope
@LeeTreveilの場合、元の値を整数に変換してどのくらい分けるかを知るためにどのカルチャが使用されたかを示す追加の列をデータベースに格納する必要があります。 FrançoisWahlが指摘するように、2130などの単一の整数を考えると、これを知ることはできません。 –
decimal value = ((decimal)(myNumber/100.0));
var result = String.Format("{0:c}", value);
はここString.FormatのをC#でそれを行う方法は次のとおりです。あなたの現在のカルチャの書式を取得します
decimal amount = 2130/100M;
string output = string.Format("{0:c}", amount);
は、次の試してみてください。ただし
decimal amount = 2130/100m;
string output = value.ToString("C", CultureInfo.CurrentCulture);
string asLocalCurrency(int intMoney)
{
return (num/100m).ToString("c"); //e.g. 12345 becomes €123.45 for me
}
string asSomeLocalCurrency(int intMoney, CultureInfo cInfo)
{
return (num/100m).ToString("c", cInfo); // e.g. 12345 with InvariantCulture is ¤123.45
}
。これは、123.45ポンドが123.45ドルまたは123.45ユーロになることを意味します。これは明らかに正しくありません。
次に、NIO、AUD、CAD、TOP、USD、HKD、および一束を表すためにペソ/ドル記号$を使用できるという問題があります。複数の場所で使用されている唯一のシンボルではありません。あなたが古い支払いを記録していても、IEPやITLのために使用されている£のようなものであっても、もう使用されなくても問題になることがあります。
したがって、値をすべての通貨に適用されないメインユニットのパーセンテージとして格納しているという事実があります。
貨幣価値は、暗黙のまたは明示的な通貨でのみ意味があります。ここでは、どちらも持っていないもの、または暗黙のものを明示的なものに置き換えているもの、あるいは正しいものを維持するための非常に大きなオーバーライドロジックに依存しているものがあります。
これらのうちの最後のものは機能しますが、込み入っています。他の2つは間違っています。
最後に、文化は人々が最もよく知っている通貨を示していますが、いつも使うものではありません。私はkronerとøreを使うことがよくありますが、それらを同じに使うときはHiberno-Englishを使います。
通貨とともにISO 4217コードを保存することをおすすめします。最終請求書のどこかに置いておくことをお勧めします。シンボルは喜ばしいものです。コードは物事を正確にするのに適しています。
デフォルトの選択肢ではおそらく最良の推測を除いて、ユーザーのカルチャを無視します。 (たとえば、アメリカ人の場合は、おそらくはUSDを使用したいと思うかもしれませんが)。多くの通貨はので、ここですべてのバーのリストには、いくつかの特殊な国際ユースケースだ、世界ではありません。
AED United Arab Emirates Dirham د.إ
AFN Afghan Afghani ؋
ALL Albanian Lek L
AMD Armenian Dram դր
ANG Netherlands Antillean Guilder ƒ
AOA Angolan Kwanza Kz
ARS Argentine Peso $
AUD Australian Dollar $
AWG Aruban Florin ƒ
AZN Azerbaijani Manat man.
BAM Bosnia and Herzegovina Convertible Mark KM
BBD Barbados Dollar $
BDT Bangladeshi Taka ৳
BGN Bulgarian Lev лв
BHD Bahraini Dinar .د.ب
BIF Burundian Franc FBu
BMD Bermudian Dollar $
BND Brunei Dollar $
BOB Boliviano Bs.
BRL Brazilian Real R$
BSD Bahamian Dollar $
BTN Bhutanese Ngultrum Nu.
BWP Botswana Pula P
BYR Belarusian Ruble Br
BZD Belize Dollar $
CAD Canadian Dollar $
CDF Congolese Franc FC
CHF Swiss Franc Fr.
CLP Chilean Peso $
CNY Chinese Yuan ¥
COP Colombian Peso $
CRC Costa Rican Colon ₡
CUC Cuban convertible Peso $
CUP Cuban Peso $
CVE Cape Verde Escudo $
CZK Czech Koruna Kč
DJF Djiboutian Franc Fdj
DKK Danish Krone kr
DOP Dominican Peso $
DZD Algerian Dinar د.ج
EEK Estonian Kroon kr
EGP Egyptian Pound ج.م
ERN Eritrean Nakfa Nfk
ETB Ethiopian Birr Br
EUR Euro €
FJD Fiji Dollar $
FKP Falkland Islands Pound £
GBP Pound Sterling (British Pound) £
GEL Georgian Lari lari
GHS Ghanaian Cedi ₵
GIP Gibraltar Pound £
GMD Gambian Dalasi D
GNF Guinean Franc FG
GTQ Guatemalan Quetzal Q
GYD Guyanese Dollar $
HKD Hong Kong Dollar $
HNL Honduran Lempira L
HRK Croatian Kuna kn
HTG Haitian Gourde G
HUF Hungarian Forint Ft
IDR Indonesian Rupiah Rp
ILS Israeli New Sheqel ₪
INR Indian Rupee Rs
IQD Iraqi Dinar د.ع
IRR Iranian Rial ﷼
ISK Icelandic Króna kr
JMD Jamaican Dollar $
JOD Jordanian Dinar JD
JPY Japanese Yen ¥
KES Kenyan Shilling Ksh
KGS Kyrgyzstani Som som
KHR Cambodian Riel ៛
KMF Comoro Franc CF
KPW North Korean Won ₩
KRW South Korean Won ₩
KWD Kuwaiti Dinar د.ك
KYD Cayman Islands Dollar $
KZT Kazakhstani Tenge ₸
LAK Lao Kip ₭
LBP Lebanese Pound ل.ل
LKR Sri Lanka Rupee Rs
LRD Liberian Dollar $
LSL Lesotho Loti M
LTL Lithuanian Litas Lt
LVL Latvian Lats Ls
LYD Libyan Dinar ل.د
MAD Moroccan Dirham د.م.
MDL Moldovan Leu leu
MGA Malagasy Ariary ariary
MKD Macedonian Denar ден
MMK Myanma Kyat K
MNT Mongolian Tögrög (Tugrik) ₮
MOP Macanese Pataca 毫
MRO Mauritanian Ouguiya UM
MUR Mauritian Rupee R
MVR Maldivian Rufiyaa .ރ
MWK Malawian Kwacha MK
MXN Mexican Peso $
MYR Malaysian Ringgit RM
MZN Mozambican Metical MTn
NAD Namibian Dollar $
NGN Nigerian Naira ₦
NIO Nicaraguan Cordoba Oro C$
NOK Norwegian Krone kr
NPR Nepalese Rupee रू.
NZD New Zealand Dollar $
OMR Omani Rial ر.ع.
PAB Panamanian Balboa ฿
PEN Peruvian Nuevo Sol S/.
PGK Papua New Guinean Kina K
PHP Philippine Peso ₱
PKR Pakistani Rupee Rs
PLN Polish Zloty zł
PYG Paraguayan Guaraní ₲
QAR Qatari Rial ر.ق
RON Romanian New Leu lei
RSD Serbian Dinar РСД
RUB Russian Rouble руб
RWF Rwandan Franc RF
SAR Saudi Riyal ر.س
SBD Solomon Islands Dollar $
SCR Seychelles Rupee SRe
SDG Sudanese Pound SDG
SEK Swedish Krona kr
SGD Singapore Dollar $
SHP Saint Helena Pound £
SLL Sierra Leonean Leone Le
SOS Somali Shilling So. Sh.
SRD Surinamese Dollar $
STD São Tomé and Príncipe Dobra Db
SYP Syrian Pound SYP
SZL Lilangeni E
THB Thai Baht ฿
TJS Tajikistani Somoni TJS
TMT Turkmenistani Manat m
TND Tunisian Dinar د.ت
TOP Tongan Paʻanga T$
TRY Turkish Lira TL
TTD Trinidad and Tobago Dollar $
TWD New Taiwan Dollar $
TZS Tanzanian Shilling TZS
UAH Ukrainian Hryvnia ₴
UGX Ugandan Shilling Ush
USD United States Dollar $
UYU Uruguayan Peso $
UZS Uzbekistan Som som
VEF Venezuelan Bolívar Fuerte Bs. F
VND Vietnamese Ðồng ₫
VUV Vanuatu Vatu Vt
WST Samoan Tala WS$
XAF CFA Franc BEAC FCFA
XCD East Caribbean Dollar $
XOF CFA Franc BCEAO CFA
XPF CFP Franc F
YER Yemeni Rial rial
ZAR South African Rand R
ZMK Zambian Kwacha ZK
ZWL Zimbabwe Dollar $
ああルック。ジンバブエは私が更新した最後の時間に自分のドルを持っていました。どちらが速く起こるか、それをリストから削除するか、フレームワークが更新されます。
C#またはSQLで書式設定していますか? – Blorgbeard
£21.30は、今日の換算レートでは少なくとも$ 21.30と同じではありません...特定の通貨も値とともに保管していますか? – Pete
c#できればstring.format –