NSNumberFormatter отображает 1 000 000 как 1 млн и т. Д. - PullRequest
3 голосов
/ 06 мая 2011

Как описано в заголовке, есть ли способ отформатировать огромное число, например, 1 000 000 (1 млн.) Или 45 500 000 (45,5 млн.), Чтобы отобразить сокращенную версию названия этого числа.Я просто хочу запретить всем советам делать это вручную.Я знаю, как это сделать.Я просто хочу узнать, есть ли какой-нибудь более простой способ использования NSNumberFormatter.

Cheers,

Lukasz

Ответы [ 3 ]

6 голосов
/ 06 мая 2011

Я бы предложил комбинацию руководства и использования NSNumberFormatter. Моя идея заключается в создании подкласса NSNumberFormatter. Если форматируемое число> 1000000, вы можете разделить его, использовать супер реализацию для форматирования результата и добавить «млн» в конец. Делайте только ту часть, которую вы не могли сделать для себя.

4 голосов
/ 02 февраля 2012

Вот примерный эскиз подкласса 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
1 голос
/ 06 мая 2011

Нет, я не думаю, что есть способ сделать это с NSNumberFormatter. Вы сами по этому вопросу.

...