我正在使用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位小数)
答案 0 :(得分:34)
要设置小数位数,请使用:
percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 1
根据您的需要设置最小值和最大值。应该是不言自明的。
答案 1 :(得分:4)
使用Swift 4.2,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)
//let myString1 = percentFormatter.string(from: NSNumber(value: myDouble1)) // also works
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%")
答案 2 :(得分:0)
如有疑问,请查看苹果文档中的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。