我需要根据一些数据和用户选项格式化一个 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];
结果是……相当糟糕……