4

我希望格式化程序将 -£4.00 显示为 -£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];
}
4

1 回答 1

2

这似乎很奇怪。使用时,

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

它打印在括号中,但如果您使用其他国家/地区的其他标识符,则打印正确。

我可以看到两种方法:

  1. 创建自己的格式化程序:

    [currencyStyle setFormat:@"¤#,##0.00"];

2.另一个不太合适的方法是使用澳大利亚的标识符。它的格式与您需要的相同。

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_AU"];
于 2013-08-05T12:45:06.733 回答