2015-06-05 47 views
1

我正在研究需要在Swift中執行一些顯示和計算Double類型的應用程序。我創建的結構採用Double作爲參數,並且由於它也顯示了它,所以我希望將尾隨零保留在值的末尾。但是,我似乎無法保留尾隨零被截斷。在Swift中保留.doubleValue()中的尾隨零

這是我一直在嘗試一個遊樂場:

let numberString = "-3.60" 


// "3.60" 
let positiveString = numberString.stringByReplacingOccurrencesOfString("-", withString: "", options: nil, range: nil) 


// 3.6 
let positiveDouble = (positiveString as NSString).doubleValue 


// "3.60" 
let positiveDoubleString = NSString(format: "%0.02f", positiveDouble) 


// 3.6 
let positiveDoubleWithZeros = positiveDoubleString.doubleValue 

我不斷收到3.6作爲結果,不管我怎麼努力。我錯過了什麼是轉換的明顯部分?

+1

'positiveDoubleWithZeros'是一個浮點數,並且3.6 == 3.60。如果要用兩個小數位數顯示數字,請使用*字符串*'positiveDoubleString'。 –

+0

@MartinR所以我不應該擔心double值中的尾隨零,而只是使用字符串值進行格式化後顯示尾隨零?這更有意義。 –

+1

是的。雙值沒有「尾隨零」。你在操場上看到的3.6又是將浮點數轉換爲字符串。 –

回答

4

你必須使用NSNumberFormatter:

let formatter = NSNumberFormatter() 
formatter.minimumFractionDigits = 2 
formatter.maximumFractionDigits = 3 
println(formatter.stringFromNumber(1.0000)) 
println(formatter.stringFromNumber(1.2345)) 

這個例子將打印1.00對於第一種情況和1.234第二,最小和最大小數位數可以根據需要進行調整。

我希望能幫到你!

+0

NSNumberFormatter和'String(格式:)都可以格式化一個浮點數,所以你可以選擇更適合你的需求。但這與這個*問題無關,這就是爲什麼* final *數字顯示爲3.6而不是3.60。 –