代码之家  ›  专栏  ›  技术社区  ›  Mustafa

将数字格式化为百分比

  •  18
  • Mustafa  · 技术社区  · 15 年前

    我不明白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%”(尊重当地人)。NSNumberFormatterPercentStyle使用90.5做什么,为什么?还有,我怎样才能得到我想要的结果!?

    6 回复  |  直到 7 年前
        1
  •  27
  •   John Gardner    15 年前

    它假定这个数字在0-1之间,因为它是一个百分比

    所以0.905会让你得到90.5%。

        2
  •  65
  •   Pulkit Goyal    12 年前

    把乘数设为 1 如果你的数字已经是百分比了。

    numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
    [numberFormatter setMaximumFractionDigits:0];
    [numberFormatter setMultiplier:@1];
    
        3
  •  4
  •   tc.    15 年前

    让我们从基础开始:

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

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

    另请参见:每千米标志(°) 每一万个符号(±).

        4
  •  3
  •   murgatroid99 dhg    15 年前

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

        5
  •  2
  •   jtbandes    15 年前

    “百分比样式”格式化程序需要 0.905 如果你想以 90.5% 90.5 因为是1,所以是1的9050%。

        6
  •  2
  •   Sunil Targe    6 年前

    创建 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%

        7
  •  0
  •   fwhenin    11 年前