我希望格式化程序显示 - £4.00 as - £4.00但它一直显示为(£4.00),为什么会这样?
下面的函数将字符串“00000014”变为“£00.14”,它也应该变为负值。但数字格式化器似乎添加括号。
代码如下:
+(NSString *)pfsCurrencyAmountString:(NSString *)amount CurrencyCodeAsString:(NSString *)code{
if (amount == nil) {
return nil;
}
int amountLength = [amount length];
NSMutableString *amountMutable = [NSMutableString stringWithString:amount];
if (amountLength > 2) {
[amountMutable insertString:@"." atIndex:amountLength - 2];
}
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyStyle setNumberStyle:@"NSNumberFormatterCurrencyStyle"];
[currencyStyle setLocale:locale];
[currencyStyle setCurrencyCode:code];
NSNumber * balance = [currencyStyle numberFromString:amountMutable];
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
return [currencyStyle stringFromNumber:balance];
}
答案 0 :(得分:2)
这看起来很奇怪。当你使用时,
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
它在括号中打印,但如果您对其他国家/地区使用其他标识符,则打印正确。
我可以看到两种方式:
创建自己的格式化程序:
[currencyStyle setFormat:@“¤#,## 0.00”];
2.另一种不太正确的方法是使用澳大利亚的标识符。它的格式与您需要的格式相同。
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_AU"];