0SX
0SX

Reputation: 1292

How to convert a NSString number to a 3 digit percentage value?

I have a NSString that has the following number 0.871 and I'm trying to convert this to display like so 87.1%

I tried to use NSNumberFormatter to get that result but I can't get it to display 3 digits. What's the best way to achieve this result? Thanks.

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterPercentStyle];
NSNumber *number = [formatter numberFromString:inputString];
[formatter release];

Upvotes: 1

Views: 1448

Answers (3)

s3tjan
s3tjan

Reputation: 1168

Just use setMinimumFractionDigits:

NSNumber *myNumber = [NSNumber numberWithFloat:0.871];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterPercentStyle];
[formatter setMinimumFractionDigits:1];

NSLog(@"%@", [formatter stringFromNumber:myNumber]);     // 87.1%

this also ensures that percentages are formatted appropriately for the locale.

Upvotes: 1

Raphael Petegrosso
Raphael Petegrosso

Reputation: 3870

NSString * str = @"0.863";
NSString * newStr = [NSString stringWithFormat:@"%.1f%%", [str floatValue]*100];

Upvotes: 4

Terry Wilcox
Terry Wilcox

Reputation: 9040

If you're trying to convert a string to a number, then format the number:

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:inputString];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterPercentStyle];
NSString *formattedString = [formatter stringFromNumber:number];
[formatter release];

If you just want to turn "0.871" into the number 87.1:

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:inputString];
NSDecimalNumber *percentNumber = [number decimalNumberByMultiplyingByPowerOf10:2];

Upvotes: 2

Related Questions