NSNumberFormatter PercentStyle小数位

Fre*_*ust 24 nsnumberformatter swift

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

输出8%而不是8.5%,我怎么能输出8.5%?(但最多只有2位小数)

zis*_*oft 36

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

percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 1
Run Code Online (Sandbox Code Playgroud)

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

  • 对于最多2位小数,将`percentFormatter.maximumFractionDigits`设置为`2`."8.5"将显示为"8.5",但"8.534"将显示为"8.53". (3认同)

Ima*_*tit 7

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

var minimumFractionDigits: Int { get set }
Run Code Online (Sandbox Code Playgroud)

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


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

var maximumFractionDigits: Int { get set }
Run Code Online (Sandbox Code Playgroud)

接收器允许作为输入和输出的小数点分隔符之后的最大位数。


以下Playground代码显示了使用时如何使用minimumFractionDigitsmaximumFractionDigits设置小数点分隔符后的位数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%")
Run Code Online (Sandbox Code Playgroud)