2010-08-11 145 views
16

我不明白NSNumberFormatterPercentStyle是如何工作的!以百分比格式化数字

例子:

NSNumber *number = [NSNumber numberWithFloat:90.5]; 
NSNumberFormatter *percentageFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 

NSString *strNumber = [percentageFormatter stringFromNumber:numbericString]; 
NSLog (strNumber); // Output: 9,050% 

我只是想显示 “90.5%”(尊重NSLocal)。什么是NSNumberFormatterPercentStyle与90.5做什么,为什么?而且,我怎样才能得到我想要的结果!?

回答

26

它假定这个数字是在0-1的范围内,因为它是一个百分数

所以0.905会让你90.5%。

2

我不知道这种语言,但根据您的代码示例和输出,我猜测百分比格式化程序乘以100,然后将%符号放在1以使其变为100%。你想要的是使用.905,这应该成为90.5%。

1

如果您想以90.5%结尾,则“百分比样式”格式化程序预计的数量为0.905。它解释90.5为选自1,所以它的的1

3

9050%让我们从基础开始:

  • 1 = 100%
  • 1/2 = 0.5 = 50%

“百分比”意味着“100分”,所以12%意味着12/100。你不用“乘以100”来得到一个百分比值,你乘以100%(这与乘以1相同,这与没做任何事情相同)。

不是每个人都使用base 10(尽管大多数“现代”语言都这样做),并不是每个人都以100为分母。例如,请参阅perMillSymbol(或kCFNumberFormatterPerMillSymbol)。没有“permill”格式,但它可能会自动用于不使用百分比的语言环境。

另见:每英里标志(‰)和每十万英镑标志(‱)。

42

只需将乘数设置为1,前提是您的号码已达到百分比。

numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 
[numberFormatter setMaximumFractionDigits:0]; 
[numberFormatter setMultiplier:@1]; 
+0

正是我需要的,谢谢! – kernix 2013-12-11 10:12:38

+5

优秀!应该是被接受的答案! – orkenstein 2014-10-10 08:10:28

0

Pulkit戈亚尔的答案是正确的......乘数设定为1个品牌“50”到'50%”

相关问题