2014-08-29 3 views
0

Как я могу форматировать строку двойного с быстрым? Я делаю калькулятор, как базовый калькулятор на iOS, и мне нужно решение, которое изменяет отображаемый результат в зависимости от количества символов после точки (не более 9 цифр).Форматирование строки двойного с быстрым

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

EDIT:

Я забыл сказать, что мне нужно не должно превышать максимум 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

ответ

1

Это потому, что вы используют %.2f. Удалите все форматирование поплавка. Он должен решить вашу проблему.

EDITВ ответ на комментарий ...

Или, если вы беспокоитесь о длинных, формат, чтобы независимо от точности вы хотите. Предположим, вам нужна точность в 8 баллов, скажем %.8f.

+0

Правильно, я забыл сказать, что мне не нужно превышать максимум 9 символов, включая точку, исключая% .2f Я не получаю желаемого результата –

+0

..adding% .9f Я не получаю то, что хочу, потому что если я получу 1.32, в результате отображаемый результат будет 1.32000000 с большим количеством ненужных нулей –

Смежные вопросы