2011-04-06 137 views
1

我有一个NSString有以下数字0.871,我试图将其转换为像这样显示87.1%如何将NSString数字转换为3位数百分比值?

我试图使用NSNumberFormatter来获得该结果,但我不能让它显示3位数字。达到这个结果的最好方法是什么?谢谢。

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

只是快速一瞥,是'NSNumberFormatterPercentStylee'是一个错字? – 2011-04-06 02:30:16

+0

是的,对不起。 – 0SX 2011-04-06 02:32:50

回答

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

+1感谢,简短和甜蜜的代码。它按需要工作。再次感谢。 – 0SX 2011-04-06 02:53:10

2

如果你想将字符串转换成数字,然后格式化号码:

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:inputString]; 

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

如果你只想把“0.871”到数87.1:

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

+1谢谢,这是我想要做到的。由于简单,我将与Raphael的代码一起使用。 – 0SX 2011-04-06 02:55:20

1

只需使用setMinimumFractionDigits:

NSNumber *myNumber = [NSNumber numberWithFloat:0.871]; 

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

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

这也确保百分比适合于语言环境的格式。