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
值如何,结果都是一样的。
答案 0 :(得分:4)
是什么让你认为这个结果是错的?
货币指标的位置和符号不仅取决于货币,而是取决于区域设置。
我举一个例子,让我们有货币代码EUR
(欧元)。
现在尝试使用区域设置为en_US
(英语,美国)和cs_CZ
(捷克语,捷克共和国)格式化金额。您将分别获得€0.89
和0,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),语言设置为英语(小数点分隔符为点)。请注意,未从区域设置数字格式。它由语言设定。
所以,问题不在于
.
结果,问题在于你的期望,这是错误的。