适用于iOS 8的NSNumberFormatter的错误行为

时间:2014-10-01 16:13:46

标签: ios objective-c nsnumberformatter

以下代码输出正确的值,直到iOS 7

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

它输出str 55.368%

但在iOS 8中,它将str输出为 1

我在Apple的NSNumberFormatter文档中没有看到任何弃用或任何API更改。这是一个严重的错误还是我错过了什么?

3 个答案:

答案 0 :(得分:2)

这适用于iOS7& iOS8上:

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

答案 1 :(得分: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];

答案 2 :(得分:0)

这可能是一个偶然事件 - 你应该使用setFormatNSNumberFormatters不支持),它支持这样的三重规范,{{1}分开项目。

你应该使用:;setNegativeFormat和个别项目,例如

setPositiveFormat