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
值如何,结果都是相同的。
最佳答案
是什么让您认为这个结果是错误的?
货币指示器的位置和符号不仅取决于货币,还取决于区域设置。
我举一个例子,我们有货币代码EUR
(欧元)。
现在尝试将区域设置设置为 en_US
(英语、美国)和 cs_CZ
(捷克语、捷克共和国)来设置金额格式。您将分别获得 €0.89
和 0,89€
。
即使符号也可以改变,让我们尝试使用货币代码 CZK
(捷克克朗) - 您会得到
分别为0.89捷克克朗
和0,89 Kc
。
考虑到区域设置和货币代码,您的结果可能是绝对正确的。
编辑:
NSLocale* locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_BG"] autorelease];
NSLog(@"%@", [locale objectForKey:NSLocaleCurrencyCode]);
NSLog(@"%@", [locale objectForKey:NSLocaleDecimalSeparator]);
输出:
BGN
.
如您所见,区域设置已正确初始化,区域设置为保加利亚(本地货币代码为 BGN),语言设置为英语(小数分隔符是一个点)。请注意,数字格式不是从区域设置的。它是由语言设置的。
所以,问题不在于 NSNumberFormatter
结果,问题在于你的期望,这是错误的。
关于objective-c - NSNumberFormatter 错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201050/