2010-04-23 7 views
20

Ich lese über NSLocaleCurrencySymbol, aber wo würde ich die Variable finden, die verwendet wird, um die "Anzahl der Dezimalstellen" in der Währung eines Landes zu bestimmen?Die "Währung Dezimalstellen Breite" verschiedener Länder im iPhone-SDK

I.E. In den USA ist es üblich, dass Dollarbeträge mit 2 Dezimalstellen geschrieben werden: $ 1.23

Wie sieht es mit vielen anderen Ländern aus?

Antwort

26

Es gibt eine Reihe anderer Länder, die eine unterschiedliche Anzahl von Dezimalstellen anzeigen. 2 ist die Mehrheit, 0 (kein Cent in ihrer Währung, z. B. Japan) ist die größte Minderheit, 3 wird nur in wenigen verwendet. Keine andere Nummer, die ich kenne. Wenn Wechselkurse angegeben werden, werden typischerweise mehr Dezimalstellen verwendet. Die Währungen mit 0 und 3, die mir bekannt sind, sind unten gezeigt. http://www.iso.org/iso/support/currency_codes_list-1.htmhttp://en.wikipedia.org/wiki/ISO_4217 oder http://www.currency-iso.org/en/home/tables/table-a1.html:

Die Codes ISO Währung finden Sie unter.

ISO Code   Currency Decimal places 

ADP Andoran Peseta 0 
AFA Afghani Afghani 0 
BEF Belgian franc 0 
BHD Bahraini dinar 3 
BIF Burundi franc 0 
BYB Belorussian rubel (old) 0 
BYR Belorussian rubel (new) 0 
CLP Chilean peso 0 
COP Colombian peso 0 
DJF Djibouti franc 0 
ECS Ecuadorian sucre 0 
ESP Spanish peseta 0 
GNF Guinea franc 0 
GRD Greek drachma 0 
HUF Hungarian forint 0 
IDR Indonesian rupiah 0 
IQD Iraqui dinar 3 
ITL Italian lira 0 
JOD Jordan dinar 3 
JPY Japanese yen 0 
KMF Comoros franc 0 
KRW South Korean won 0 
KWD Kuwaiti dinar 3 
LAK Laos new kip 0 
LUF Luxembourg franc 0 
LYD Libyan dinar 3 
MGF Madagascan franc 0 
MZM Mozambique metical 0 
OMR Omani rial 3 
PTE Portugese escudo 0 
PYG Paraguay guarani 0 
ROL Roumanian Lei 0 
RWF Rwanda franc 0 
TJR Tadzhikistani rubel 0 
TMM Turkmenistani manat 0 
TND Tunesian dinar 3 
TPE Timor escudo 0 
TRL Turkish lira 0 
TWD New Taiwan dollar 0 
UGX Uganda shilling 0 
VND Vietnamese dong 0 
VUV Vanuata vatu 0 
XAF CFA Franc BEAC 0 
XOF CFA Franc BCEAO 0 
XPF CFP Franc 0 
+0

Der Link zur Verfügung gestellt ist nicht mehr gültig, ich vermute, es sollte sein: http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=46121 aber das zeigt nur auf eine Seite, wo Sie die volle Spezifikation kaufen können. Wikipedia pflegen Sie die Liste hier: http://en.wikipedia.org/wiki/ISO_4217 – knightpfhor

+0

'DECIMAL (19, 4)' ** ist eine beliebte Wahl ** überprüfen [this] (http://stackoverflow.com/questions/224462/Speichern-Geld-in-Dezimal-Spalte-what-precision-and-scale) überprüfen Sie auch [hier] (http://www.thefinancials.com/Default.aspx?SubSectionID=curformat) World Currency Formate um zu entscheiden, wie viele Dezimalstellen zu verwenden sind, hilft Hoffnung. – stom

22

In iOS 6 (und früher möglicherweise) Sie können die Anzahl der Stellen nach dem Komma einer Währung von den minimumFractionDigits Eigenschaft eines NSNumberFormatter auf das richtige Gebietsschema festgelegt herauszufinden:

 
void (^currency_test)(NSString *) = ^(NSString *locale) { 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:locale]]; 
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    NSLog(@"%@: %@ (minimumFractionDigits = %d)", locale, [formatter stringFromNumber:@(1000)], [formatter minimumFractionDigits]); 
}; 

currency_test(@"en_US"); 
currency_test(@"nl_NL"); 
currency_test(@"de_DE"); 
currency_test(@"fr_FR"); 
currency_test(@"jp_JP"); 
currency_test(@"ar_JO"); 

en_US: $1,000.00 (minimumFractionDigits = 2) 
nl_NL: € 1.000,00 (minimumFractionDigits = 2) 
de_DE: 1.000,00 € (minimumFractionDigits = 2) 
jp_JP: ¥ 1000 (minimumFractionDigits = 0) 
ar_JO: ١٠٠٠٫٠٠٠ د.أ.‏ (minimumFractionDigits = 3) 

Beachten Sie, dass Sie nennen müssen [Formatierer setNumberStyle: NSNumberFormatterCurrencyStyle] vor den minimumFractionDigits Eigenschaft mit dem richtigen Wert aufgefüllt wird (dass man mich nur dauerte eine halbe Stunde unsere zu arbeiten!)

+2

Ich kann nicht glauben, dass diese Antwort nicht mehr Up-Stimmen hat und dass es nicht die akzeptierte Antwort ist, da es die einzige ist, die wirklich die OP-Frage beantwortet. Sie haben mir Stunden des Ausprobierens und des Durchstöberns von Dokumenten erspart. Eine dieser wertvollen Nuggets, die nur Stack Overflow bieten kann. Vielen Dank! – mluisbrown

Verwandte Themen