转换号码价格 swift

convert number price swift

我必须在标签的文本中显示价格。 public var balance: 浮动 只是作为一个数字,我得到一个“8000”而不是它应该显示“80.00 €”。我无法转换它,你能帮帮我吗?

public var balance: Float
    saldoPrice.text = String(userDataByCode!.balance)

这样我显示“8000”

我创建了以下扩展来解决您的具体问题:

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
    }
}

用法:

var yourNumber : Double = 80
yourNumber.formatToAmount() // prints: 80.00 €