AlexR
AlexR

Reputation: 5644

Formatting a NSNumber as percentage (%) with one decimal place using NSNumberFormatter

I am trying to format a NSNumber containing a value of 0.305 as "30.5%".

However, my following code does not work:

[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setLocale:[NSLocale currentLocale]];

How can I specify that the number should be formatted as percentage with one decimal place?

Upvotes: 5

Views: 4478

Answers (4)

Ofir Malachi
Ofir Malachi

Reputation: 1286

I'm using also setMaximum

float precent = 3.5;

    NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc]init];
    [numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];     
    [numberFormatter setMinimumFractionDigits:1];
    [numberFormatter setMaximumFractionDigits:1];       
    return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:precent]];

Upvotes: 0

Bob de Graaf
Bob de Graaf

Reputation: 2722

Edited for the actual correct answer:

[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMinimumFractionDigits:1];

Upvotes: 5

Sebastien Windal
Sebastien Windal

Reputation: 1414

This works for me:

[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMinimumFractionDigits:1];

Upvotes: 14

Nick Weaver
Nick Weaver

Reputation: 47241

Try

float percent = 0.305;

NSString *formattedPercentText = [NSString stringWithFormat:@"%.1f%%", percent * 100];

Upvotes: 4

Related Questions