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

有帮助吗?

解决方案

它假定该数目在0-1的范围内,因为它是一个百分数

所以0.905会让你90.5%。

其他提示

刚刚成立的乘数1如果你的号码已经在百分比。

numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];

让我们从基础开始:

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

“百分比”的意思是“满分 100”,因此 12% 表示 12/100。您不是“乘以 100”来获得百分比值,而是乘以 100%(与乘以 1 相同,与不执行任何操作相同)。

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

也可以看看:每千符号 (‰) 和每万符号 (‱)。

我不知道的语言,但基于您的代码示例和输出,我猜想,格式化乘以100,然后把百分比%符号上,使1变为100%。你需要的是用.905,这应该成为90.5%。

“百分比样式”如果你想与0.905落得格式化需要数字90.5%的。它解释90.5为选自1,所以它的1%9050

Pulkit戈亚尔的答案是正确...设置乘数为1个品牌 '50' 到'50%'

<强>夫特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%

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top