格式化数字为百分比

时间:2010-08-11 15:53:38

标签: ios iphone percentage nsnumber nsnumberformatter

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

7 个答案:

答案 0 :(得分:51)

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

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

答案 1 :(得分:28)

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

所以0.905会给你90.5%。

答案 2 :(得分:4)

让我们从基础知识开始:

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

“百分比”表示“满分100”,因此12%表示12/100。你没有“乘以100”得到一个百分比值,你乘以100%(与乘以1相同,这与没有做任何事情相同)。

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

参见:PER MILLE SIGN(‰)和PER TEN THOUSAND SIGN(‱)。

答案 3 :(得分:3)

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

答案 4 :(得分:2)

如果您希望以0.905结尾,那么“百分比样式”格式化程序需要大量90.5%。它将90.5解释为1,因此它是1的9050%。

答案 5 :(得分:1)

迅速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%

答案 6 :(得分:0)

Pulkit Goyal的答案是正确的......将乘数设置为1使得' 50'进入' 50%'

相关问题