2016-09-22 3 views
1

Я создаю приложение калькулятора, и я пытаюсь заставить text.label отображать только десятичные значения, если они не пусты, например; 5 + 5 = 10, на данный момент он показывает 10.0, потому что я использую поплавки. Я создаю функцию, которую я вызываю каждый раз, прежде чем печатать результат на экране, что кажется мне ненужным?Удалить пустые десятичные значения Swift 3

+4

Просто используйте NumberFormatter minimumFractionDigits = 0 –

+0

Это не сработает, потому что мне все еще нужно показывать десятичные значения, если они должны быть, например 5.2 + 5 = 10.2 – Brewski

ответ

1

Удлинитель

Свифта 3

extension Float { 
    var cleanValue: String { 
     return self.truncatingRemainder(dividingBy: 1) == 0 ? String(format: "%.0f", self) : String(self) 
    } 
} 

Свифта 2

extension Float { 
    var cleanValue: String { 
     return self % 1 == 0 ? String(format: "%.0f", self) : String(self) 
    } 
} 

Использование

var sampleValue: Float = 3.234 
print(sampleValue.cleanValue) 
//Output = 3.234 
sampleValue = 3 
print(sampleValue.cleanValue) 
//Output = 3 
+0

Это не компилируется в Swift 3. –

+0

I отредактировал мой ответ –

+0

Спасибо, что выглядит правильно, и он работает на Playground, но в Project я получаю ошибку: член экземпляра 'cleanValue' не может использоваться для типа Float. BTW это код: result = "\ (Float.cleanValue (leftValStr)! * Float.cleanValue (rightValStr)!)" – Brewski

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