23

我不明白 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 做了什么,为什么?而且,我怎样才能得到我想要的结果!?

4

7 回答 7

66

1如果您的数字已经是百分比,只需将乘数设置为。

numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];
于 2013-09-04T19:59:54.847 回答
27

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

所以 0.905 会得到 90.5%。

于 2010-08-11T15:57:56.020 回答
4

让我们从基础开始:

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

“百分比”表示“满分 100”,因此 12% 表示 12/100。您不会“乘以 100”来获得百分比值,而是乘以 100%(这与乘以 1 相同,与不做任何事情相同)。

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

另请参阅:千分号 (‰) 和万分号 (‱)。

于 2010-08-11T16:39:40.197 回答
3

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

于 2010-08-11T15:58:05.357 回答
3

斯威夫特 4/5

NSNumber像这样创建扩展

extension NSNumber {
    func getPercentage() -> String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .percent
        formatter.maximumFractionDigits = 0 // You can set what you want
        return formatter.string(from: self)!
    }
}

获取百分比

let confidence = 0.68300 as NSNumber
print(confidence.getPercentage())

输出

68%

于 2019-09-11T06:42:29.230 回答
2

如果您想0.90590.5%. 它解释90.5为 1,所以它是 1 的 9050%。

于 2010-08-11T15:58:17.307 回答
0

Pulkit Goyal 的答案是正确的......将乘数设置为 1 会使“50”变为“50%”

于 2014-12-29T22:40:14.620 回答