iPhone-SDK中的各个国家/地区的"货币小数点宽度"

Sus*_*nna 27 iphone locale localization currency

我读到了关于NSLocaleCurrencySymbol的信息,但在哪里可以找到用于确定一个国家/地区货币中使用的"小数位数"的变量?

IE在美国,通常会看到以小数点后两位写入的美元金额:1.23美元

那么其他很多国家呢?

小智 32

还有许多其他国家/地区显示不同的小数位数.2是大多数,0(他们的货币没有美分,例如,日本)是最大的少数,3只用于少数.没有其他我知道的号码.当引用汇率时,通常使用更多小数.我知道的0和3货币如下所示.

ISO货币代码可在以下位置找到: http://www.iso.org/iso/support/currency_codes_list-1.htm http://en.wikipedia.org/wiki/ISO_4217http://www.currency-iso.org/en/home/tables/table-a1.html.

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
Run Code Online (Sandbox Code Playgroud)


Rob*_*ins 26

在iOS 6(可能更早)中,您可以从NSNumberFormatter 的minimumFractionDigits属性设置为正确的区域设置中找出货币小数位后的位数:

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)

请注意,在使用正确的值填充minimumFractionDigits属性之前,必须调用[formatter setNumberStyle:NSNumberFormatterCurrencyStyle](那个只花了我半小时才算出来!)

  • 我无法相信这个答案没有更多的选票,而且这不是公认的答案,因为它是唯一真正回答OP问题的答案.你节省了我几个小时的试错,并通过文档进行拖网搜索.其中一个只有Stack Overflow才能提供的有价值的金块.谢谢! (2认同)

S.L*_*ott 1

http://cldr.unicode.org/

这有很多你正在寻找的东西。