Reputation: 1292
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
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
Reputation: 3870
NSString * str = @"0.863";
NSString * newStr = [NSString stringWithFormat:@"%.1f%%", [str floatValue]*100];
Upvotes: 4
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