NSNumberFormatter错误的结果

时间:2013-03-04 11:58:08

标签: objective-c nsnumberformatter

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:product.priceLocale];
NSString *localizedMoneyString = [numberFormatter stringFromNumber:product.price];
[numberFormatter release];

结果:€0.89 预期结果:0,89€

无论setFormatterBehavior值如何,结果都是一样的。

1 个答案:

答案 0 :(得分:4)

是什么让你认为这个结果是错的?

货币指标的位置和符号不仅取决于货币,而是取决于区域设置。

我举一个例子,让我们有货币代码EUR(欧元)。 现在尝试使用区域设置为en_US(英语,美国)和cs_CZ(捷克语,捷克共和国)格式化金额。您将分别获得€0.890,89€

即使符号可以更改,让我们尝试使用货币代码CZK(捷克克朗) - 你会得到 <{1}}和CZK 0.89

根据区域设置和货币代码,您的结果可能绝对正确。

编辑:

0,89 Kc

输出:

BGNNSLocale* locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_BG"] autorelease];
NSLog(@"%@", [locale objectForKey:NSLocaleCurrencyCode]);
NSLog(@"%@", [locale objectForKey:NSLocaleDecimalSeparator]);

如您所见,区域设置已正确初始化,区域设置为Bulgaria(本地货币代码为BGN),语言设置为英语(小数点分隔符为点)。请注意,未从区域设置数字格式。它由语言设定。

所以,问题不在于 .结果,问题在于你的期望,这是错误的。