【问题标题】:NSNumberFormatter PercentStyle decimal placesNSNumberFormatter PercentStyle 小数位
【发布时间】:2015-05-22 13:58:30
【问题描述】:

我正在使用 Swift

let myDouble = 8.5 as Double

let percentFormatter            = NSNumberFormatter()
percentFormatter.numberStyle    = NSNumberFormatterStyle.PercentStyle
percentFormatter.multiplier     = 1.00

let myString = percentFormatter.stringFromNumber(myDouble)!

println(myString)

输出 8% 而不是 8.5%,我如何让它输出 8.5%? (但最多只能保留 2 位小数)

【问题讨论】:

    标签: swift nsnumberformatter


    【解决方案1】:

    要设置小数位数,请使用:

    percentFormatter.minimumFractionDigits = 1
    percentFormatter.maximumFractionDigits = 1
    

    根据您的需要设置最小值和最大值。应该是不言自明的。

    【讨论】:

    • 对于最多 2 位小数,将 percentFormatter.maximumFractionDigits 设置为 2。 8.5 将显示为8.5,但8.534 将显示为8.53。
    • 别忘了设置 'multiple' 否则会显示 8.5 为 850.0
    【解决方案2】:

    在 Swift 5 中,NumberFormatter 有一个名为 minimumFractionDigits 的实例属性。 minimumFractionDigits 有以下声明:

    var minimumFractionDigits: Int { get set }
    

    接收器允许输入和输出的小数分隔符后的最小位数。


    NumberFormatter 也有一个名为maximumFractionDigits 的实例属性。 maximumFractionDigits 有以下声明:

    var maximumFractionDigits: Int { get set }
    

    接收方输入和输出的小数点分隔符后的最大位数。


    以下 Playground 代码显示了如何使用 minimumFractionDigits 和 maximumFractionDigits 来设置使用 NumberFormatter 时小数分隔符后的位数:

    import Foundation
    
    let percentFormatter = NumberFormatter()
    percentFormatter.numberStyle = NumberFormatter.Style.percent
    percentFormatter.multiplier = 1
    percentFormatter.minimumFractionDigits = 1
    percentFormatter.maximumFractionDigits = 2
    
    let myDouble1: Double = 8
    let myString1 = percentFormatter.string(for: myDouble1)
    print(String(describing: myString1)) // Optional("8.0%")
    
    let myDouble2 = 8.5
    let myString2 = percentFormatter.string(for: myDouble2)
    print(String(describing: myString2)) // Optional("8.5%")
    
    let myDouble3 = 8.5786
    let myString3 = percentFormatter.string(for: myDouble3)
    print(String(describing: myString3)) // Optional("8.58%")
    

    【讨论】:

      【解决方案3】:

      如有疑问,请查看苹果文档中的 minimum fraction digits 和 maximum fraction digits,这将为您提供在格式化号码之前必须添加的这些行:

      numberFormatter.minimumFractionDigits = 1
      numberFormatter.maximumFractionDigits = 2
      

      另请注意,您的input has to be 0.085 to get 8.5%。这是caused by the multiplier property,用于默认设置为 100 的百分比样式。

      【讨论】:

      • 与接受的答案相比,这有何不同?
      • 为链接提供上下文
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多