2010-08-11 147 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%」

相關問題