以下代码输出正确的值,直到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更改。这是一个严重的错误还是我错过了什么?
答案 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)
这可能是一个偶然事件 - 你应该使用setFormat
(NSNumberFormatters
不支持),它支持这样的三重规范,{{1}分开项目。
你应该使用:;
,setNegativeFormat
和个别项目,例如
setPositiveFormat