0

我需要根据一些数据和用户选项格式化一个 NSNumber。首先用户需要选择分组分隔符(“,”或“.”或无),如果分组分隔符是“,”,那么小数分隔符将是“。” ,反之亦然...该数字是一种与其国际货币代码一起存储的货币(USD代表美元,EUR代表欧元等)...如果货币有符号,则应将其放在数字前面,如果并不是说代码会取代它。

所以 1234.50 应该看起来像 $1,234.50 -- 如果货币是 USD 并且分组分隔符是 "," $ 1.234,50 -- 如果分隔符设置为 "." 如果货币代码是 RON(它没有货币符号),则为 RON 1,234.50 ...我了解 NSNumberFormatter 依赖于 iPhone 的设置 ...这可能不是这里的情况,因为用户可以更改应用程序内的格式。 ..有什么好主意怎么做?

我试过了

- (NSString *)getFormatedNumber:(NSNumber *)number withCurrency:(NSString *)currencyAbrev andMode:(NSUInteger)mode
{

    NSNumberFormatter *formater = [[NSNumberFormatter alloc] init];

    [formater setCurrencyCode:currencyAbrev];

    if (mode == 1) {
        [formater setGroupingSize:3];
        [formater setGroupingSeparator:@","];
    }else {
        [formater setGroupingSeparator:@"."];
        [formater setGroupingSize:3];
    }



    return [formater stringFromNumber:number];
}

这些是电话

 self.label1.text = [[PSCurrencyDisplay sharedInstance] getFormatedNumber:[NSNumber numberWithDouble:12345.67f] withCurrency:@"USD" andMode:1];
    self.label2.text = [[PSCurrencyDisplay sharedInstance] getFormatedNumber:[NSNumber numberWithDouble:12345.67f] withCurrency:@"EUR" andMode:2];

结果是……相当糟糕……

4

0 回答 0