转换号码价格 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 €
我必须在标签的文本中显示价格。 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 €