2014-10-01 49 views
1

在下面的代碼輸出正確的值,直到iOS的7不正確的行爲8

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setPositiveFormat:@"0.000%;0.000%;-0.000%"]; 
    NSString *str = [numberFormatter stringFromNumber:@0.55368]; 

它輸出str55.368%

但是在IOS 8其輸出str爲 。

我在Apple的NSNumberFormatter文檔中看不到任何棄用或API更改。這是一個嚴重的錯誤還是我在這裏錯過了一些東西?

回答

2

這適用於iOS7 & iOS8上:

numberFormatter.numberStyle = NSNumberFormatterPercentStyle; 
numberFormatter.minimumFractionDigits = 3; 
0

EVOL,我在同樣的問題上運行2個星期前,然後我意識到這只是一個增加

[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 

這應該爲你工作的事。讓我知道。

更新時間:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 

//[numberFormatter setPositiveFormat:@"0.000%;0.000%;-0.000%"]; 
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[numberFormatter setLocale:usLocale]; 
[numberFormatter setMinimumFractionDigits:3]; 
NSString *str = [numberFormatter stringFromNumber:@0.55368]; 
+0

但這不解決我的問題。我期待一個3位小數的百分比格式。您建議的API返回0.55368 – 2014-10-01 16:32:18

0

這可能是偶然的,這個工作在所有 - 你應該一直使用setFormat(這是不支持的NSNumberFormatters),它支持這樣的三重規範,與;分離這幾項。

你應該使用:setNegativeFormat,setPositiveFormat與單個項目,例如,

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNegativeFormat:@"-0.000%"]; 
[numberFormatter setPositiveFormat:@"0.000%;0.000%;-0.000%"]; 
NSString *str = [numberFormatter stringFromNumber:@0.55368];