如标题中所述,有没有办法格式化大数字,如1,000,000(1百万)或45,500,000(45,5百万)字符串,以显示此数字名称的缩短版本。我只是想阻止所有建议手动完成。我知道如何这样做。我只想知道是否有更简单的方法使用NSNumberFormatter。
干杯,
卢卡斯
答案 0 :(得分:6)
我建议手动和使用NSNumberFormatter的组合。我的想法是继承NSNumberFormatter。如果您要格式化的数字是> 1,000,000,你可以划分它,使用超级实现来格式化结果,并将“mln”追加到最后。只做你不能做的部分。
答案 1 :(得分:4)
这是一个NSNumberFormatter子类的粗略草图(抱歉,格式稍微偏离):
@implementation LTNumberFormatter
@synthesize abbreviationForThousands;
@synthesize abbreviationForMillions;
@synthesize abbreviationForBillions;
-(NSString*)stringFromNumber:(NSNumber*)number
{
if ( ! ( abbreviationForThousands || abbreviationForMillions || abbreviationForBillions ) )
{
return [super stringFromNumber:number];
}
double d = [number doubleValue];
if ( abbreviationForBillions && d > 1000000000 )
{
return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d / 1000000000]], abbreviationForBillions];
}
if ( abbreviationForMillions && d > 1000000 )
{
return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d / 1000000]], abbreviationForMillions];
}
if ( abbreviationForThousands && d > 1000 )
{
return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d / 1000]], abbreviationForThousands];
}
return [super stringFromNumber:number];
}
@end
答案 2 :(得分:1)
不,我不认为有办法用NSNumberFormatter做到这一点。你自己就是这个。