Преобразование данных текстового поля в десятичное значение и обратно в строку - PullRequest
0 голосов
/ 09 июля 2019

Я преобразовал строку текстового поля в двойное число, чтобы выполнить вычисления, а затем вернулся в строку, чтобы вывести ее на метку.Сейчас я работаю с валютами, поэтому мне нужно преобразовать их в десятичную, а не в двойную.Может кто-нибудь помочь?

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 голосов
/ 09 июля 2019

Вам просто нужно использовать 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
    }()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...