I created the following extension that solves your specific problem:
extension Double{
func formatToAmount() -> String{
let numberFormatter = NumberFormatter()
numberFormatter.groupingSeparator = ","
numberFormatter.groupingSize = 3
numberFormatter.usesGroupingSeparator = true
numberFormatter.decimalSeparator = "."
numberFormatter.numberStyle = .decimal
numberFormatter.maximumFractionDigits = 2
let value = self.roundToDecimal(2)
var res = numberFormatter.string(from: value as NSNumber)!
if !res.contains("."){
res += ".00"
}else{
let resAfterComma = String(res.split(separator: ".")[1])
if resAfterComma.count == 1{ res += "0" }
}
res += " €"
return res
}
func roundToDecimal(_ fractionDigits: Int) -> Double {
let multiplier = pow(10, Double(fractionDigits))
return Darwin.round(self * multiplier) / multiplier
}
}
Usage:
var yourNumber : Double = 80
yourNumber.formatToAmount() // prints: 80.00 €