func getListing(var qty: Int) -> String{
        if(qty < qtyInStock) {
            return title + ", by " + author + " ($" + NSString(format:"%\(price).2d", price) + ")...In Stock"
        }
        else {
            //return NSString(format: "%\(price)d") + author

            return title + ", by " + author + " ($" + NSString(format:"%\(price).2d") + ")...Sold out"
        }
    }

Выход: «Великий Гэтсби» Ф. Скотта Фицджеральда (00 долларов)… В наличии.

Я не могу получить значение цены на выходе. Также я не хочу иметь дополнительный интервал между знаком $ и ценой типа double. Не могли бы вы помочь мне с этим?

-2
Faraz Hussain 25 Янв 2015 в 01:28

2 ответа

Используйте %.2f вместо %\(price).2d

1
skyline75489 25 Янв 2015 в 01:43

Вы должны использовать NSNumberFormatter для форматирования ваших чисел. Просто создайте двойное расширение вычисляемого свойства только для чтения следующим образом:

extension Double {
    var currency: String {
        let styler = NSNumberFormatter()
        styler.minimumFractionDigits = 2
        styler.maximumFractionDigits = 2
        styler.numberStyle = .CurrencyStyle
        styler.currencySymbol = "$"
        return styler.stringFromNumber(self)!
    }
}

199.99.currency   // "$199.99"
1
Leo Dabus 25 Янв 2015 в 05:56