2014-08-29 80 views
0

如何用swift格式化一個double的字符串? 我正在製作一個計算器,就像iOS上的基本計算器一樣,我需要一個解決方案,根據點後面有多少個字符(總共不超過9位數字)來更改顯示結果。用swift格式化一個double的字符串

Example Table 
|result | wished displayed result | current displayed result 
|   |       | 
|1.034 | 1.034     | 1.03 
|1.000567 | 1.000567    | 1.00 
|1.2  | 1.2      | 1.20 

使用此代碼:

result.text = String(format: "%.2f", displayNumber)

,如果我得到1.000334因此,它只能顯示1.00

編輯:

我忘了說,我需要不超過包括該點在內的最多9個字符。如果我刪除%.2f我沒有得到期望的結果,因爲如果我得到1.323429249430003442結果顯示的結果將是1.323429249430003442與許多數字(不能超過9位數包括點),否則添加%.9f是不好的,因爲如果我得到1.32結果顯示的結果將是1.32000000有很多不必要的零。

謝謝大家提前

EDIT 2(解決):

,如果有人將有助於在未來,我解決了這種方式:

var decimalNumberAsString = "\(resultNumber - floor(resultNumber))" 
var decimalTrim: NSArray = decimalNumberAsString.componentsSeparatedByString(".") 
numberOfDecimalPlaces = decimalTrim.objectAtIndex(1).length 
if numberOfDecimalPlaces < 8 { 
    numberOfDecimalPlaces = decimalTrim.objectAtIndex(1).length + 1 
} 
else { 
    numberOfDecimalPlaces = 7 
} 
result.text = String(format: "%.\(numberOfDecimalPlaces)G", resultNumber) 
+0

請參閱:[格式佔位符](https://en.wikipedia.org/wiki/Printf_format_string#Format_placeholders) – zaph 2014-08-29 16:40:49

回答

1

這是因爲你正在使用%.2f。刪除所有浮動格式。它應該解決你的問題。

編輯在迴應評論...

或者,如果你關心到任何你想要的精確長的長度,格式。假設你想要精確度爲8,比如%.8f

+0

對,我忘記說我不需要超過9個字符的最大值,包括點數,不包括% .2f我沒有得到想要的結果 – 2014-08-29 16:38:46

+0

..adding%.9f我沒有得到我想要的,因爲如果我得到1.32作爲結果,顯示的結果將是1.32000000與大量不必要的零 – 2014-08-29 16:47:44