Мой код ниже выведет значение 0,88 фунта стерлингов, когда небольшой расчет будет завершен.
Но я хотел бы вывести £ 0,88
Это возможно?
Я нашел несколько решений, но ни одно из них не работает с моим кодом.
Спасибо за любую помощь.
@IBAction func buttoncalc2(_ sender: Any) {
total2.isHidden = false
let fifthValue = Double(text5!.text!)
let sixthValue = Double(text6!.text!)
if fifthValue != nil && sixthValue != nil {
let outputvalue2 = Double(((fifthValue! * sixthValue!)/1000)*0.5)
let formatter = NumberFormatter()
formatter.roundingMode = .up
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
let string = formatter.string(from: NSNumber(value: outputvalue2)) ?? ""
total2.text = "£ \(string)"
}else{
total2.text = nil
}
}
@TinCan, несмотря на то, что этот ответ может предоставить рабочее решение, я думаю, что думать о результате форматирования как о валюте может быть правильным подходом.
возможный дубликат stackoverflow.com/a/29783546/2303865
Обратите внимание, что вы можете избежать принудительной распаковки, если будете использовать необязательную привязку внутри оператора if: if let fifthValue = fifthValue, let sixthValue = sixthValue {
Я согласен с @RobertDresler. Даже если добавление MinimumIntegerDigits, как я несколько непрозрачно предложил, сработает, использование средства форматирования валюты более четко определяет цель вашего кода.
Слишком много применений !
в вашем коде. Подумайте о том, чтобы научиться правильно и безопасно разворачивать необязательные элементы, когда у вас есть такая возможность.
Спасибо за каждый вклад. Я знаю, что мой код немного неряшлив и нуждается в очистке, поэтому посмотрю на него поближе. Спасибо еще раз
Добавлять
formatter.minimumIntegerDigits = 1
Другой подход:
Сделайте свой форматтер "форматером валюты". Он автоматически добавит символ валюты и этот недостающий ноль для вас.
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_UK")
let string = formatter.string(from: NSNumber(value: outputvalue2)) ?? ""
print(string) // £0.88
Спасибо, немного наводит порядок.
Добро пожаловать в Stack Overflow. Swift был построен на основе Objective-C, поэтому поиск ответов на Objective-C, а также ответы Swift может быть очень полезным. Я думаю, этот ответ должен помочь: stackoverflow.com/a/11131497/350538