2015-05-22 33 views
18

我用斯威夫特NSNumberFormatter PercentStyle小数

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位)

回答

27

要设置的小数的使用数量:

percentFormatter.minimumFractionDigits = 1 
percentFormatter.maximumFractionDigits = 1 

设置最小和最大您的需求。应该是不言自明的。

+2

和一个可容纳2位小数,将'percentFormatter.maximumFractionDigits'设置为'2'。 '8.5'将显示为'8.5',但'8.534'将显示为'8.53'。 –

4

使用Swift 3,NumberFormatter具有一个名为minimumFractionDigits的实例属性。 minimumFractionDigits具有以下声明:

var minimumFractionDigits: Int { get set } 

数字允许作为输入和输出由接收器中的小数点后的最小数目。


NumberFormatter也有称为maximumFractionDigits实例属性。 maximumFractionDigits具有以下声明:

var maximumFractionDigits: Int { get set } 

数字允许作为输入和输出由接收器中的小数点后的最大数目。


下面的游乐场代码显示了如何使用NumberFormatter当以小数点分隔符后设置的位数使用minimumFractionDigitsmaximumFractionDigits

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%")