2011-04-06 139 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% 

這也確保百分比適合於語言環境的格式。