将文本字段数据转换为十进制值并返回字符串

时间:2019-07-08 21:41:32

标签: swift

我将文本字段字符串转换为double进行计算,然后返回到字符串以将其输出到标签上。我现在正在使用货币输入,因此需要将其转换为十进制而不是双精度。有人可以帮忙吗?

func calcTotal() {
    let totalConv: Double? = Double(totalTextField.text!)
    let tipConv: Double? = Double(tipTextField.text!)
    guard totalConv != nil && tipConv != nil else {
        return
    }
    let result = totalConv! * ((tipConv! / 100) + 1)
    let output = String(format: "$ %.2f", result)
    totalAmount.text = String(output)
}

1 个答案:

答案 0 :(得分:0)

您只需要使用Decimal(string:)初始化程序和NumberFormatter(货币样式)来格式化十进制值。

func calcTotal() {
    guard
        let totalConv = Decimal(string: totalTextField.text!),
        let tipConv = Decimal(string: tipTextField.text!)
    else { return }
    let result = totalConv * ((tipConv / 100) + 1)
    totalAmount.text = Formatter.currency.string(for: result)
}

extension Formatter {
    static let currency: NumberFormatter = {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .currency
        return numberFormatter
    }()
}