2015-05-22 35 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%")