Swift 2.0 Format 1000's into a friendly K's Swift 2.0 Format 1000's into a friendly K's ios ios

# Swift 2.0 Format 1000's into a friendly K's

``extension Int {    var roundedWithAbbreviations: String {        let number = Double(self)        let thousand = number / 1000        let million = number / 1000000        if million >= 1.0 {            return "\(round(million*10)/10)M"        }        else if thousand >= 1.0 {            return "\(round(thousand*10)/10)K"        }        else {            return "\(self)"        }    }}print(11.roundedWithAbbreviations)          // "11"print(11111.roundedWithAbbreviations)       // "11.1K"print(11111111.roundedWithAbbreviations)    // "11.1 M"``

``func formatPoints(num: Double) ->String{    let thousandNum = num/1000    let millionNum = num/1000000    if num >= 1000 && num < 1000000{        if(floor(thousandNum) == thousandNum){            return("\(Int(thousandNum))k")        }        return("\(thousandNum.roundToPlaces(1))k")    }    if num > 1000000{        if(floor(millionNum) == millionNum){            return("\(Int(thousandNum))k")        }        return ("\(millionNum.roundToPlaces(1))M")    }    else{        if(floor(num) == num){            return ("\(Int(num))")        }        return ("\(num)")    }}extension Double {    /// Rounds the double to decimal places value    func roundToPlaces(places:Int) -> Double {        let divisor = pow(10.0, Double(places))        return round(self * divisor) / divisor    }}``

The updated code should now not return a .0 if the number is whole. Should now output 1k instead of 1.0k for example. I just checked essentially if double and its floor were the same.

I found the double extension in this question:Rounding a double value to x number of decimal places in swift

The extension below does the following-

1. Will display number 10456 as 10.5k and 10006 as 10k (will not show the `.0` decimals).
2. Will do the exact above for millions and format it i.e. 10.5M and 10M
3. Will format thousands upto 9999 in currency format i.e. with a comma like 9,999

``extension Double {    var kmFormatted: String {        if self >= 10000, self <= 999999 {            return String(format: "%.1fK", locale: Locale.current,self/1000).replacingOccurrences(of: ".0", with: "")        }        if self > 999999 {            return String(format: "%.1fM", locale: Locale.current,self/1000000).replacingOccurrences(of: ".0", with: "")        }        return String(format: "%.0f", locale: Locale.current,self)    }}``

Usage:

``let num: Double = 1000001.00 //this should be a Double since the extension is on Doublelet millionStr = num.kmFormattedprint(millionStr)``

Prints `1M`

And here it is in action-  