arrays - 仅对字符串中的数字求和 - Swift
问题描述
我有一个标签,它有数字、美元符号,我有一个 UIStepper 可以增加和减少数字。我面临的问题是它无法将数字与美元符号相加,而我想要的是将数字与美元符号相加。
import UIKit
import GMStepper
class ViewController: UIViewController {
@IBOutlet var stepper: GMStepper!
@IBOutlet var priceLabel: UILabel!
var price: Double = 5.500
override func viewDidLoad() {
super.viewDidLoad()
priceLabel.text = "5.5 $"
}
@IBAction func stepper(_ sender: Any) {
let newValue = price * stepper.value
let priceS = String(format: "%.3f", newValue)
priceLabel.text = "\(priceS) $"
}
}
解决方案
首先,让我们将货币价值String
正确转换为 a。
第二件事是忘记尝试将String
用于任何事情。考虑格式化字符串是仅显示的。不要试图将它们转换为数字。相反,将必要的值保留为数字。
class ViewController: UIViewController {
private lazy var formatter: NumberFormatter = {
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "en_US")
numberFormatter.numberStyle = .currency
numberFormatter.currencyCode = "USD"
numberFormatter.minimumFractionDigits = 3
numberFormatter.maximumFractionDigits = 3
return numberFormatter
}()
var originalPrice: Double = 5.5
private var price = originalPrice
private func updateText() {
priceLabel.text = formatter.string(for: price)
}
override func viewDidLoad() {
super.viewDidLoad();
updateText()
}
@IBAction func stepper(_ sender: Any) {
// do any calculation here using price and stepper.value
price = originalPrice * stepper.value
updateText()
}
}
推荐阅读
- rust - 为什么在调试和发布模式下存储和加载 AVX2 256 位向量会产生不同的结果?
- c - 完成前程序退出
- powershell - 使用powershell检查文件内容是否存在
- php - 从具有关系的数据库中检索数据
- python - Python Selenium `move_by_offset` 不起作用
- kotlin - Kotlin 等待不暂停?
- python - 我收到以下错误:ModuleNotFoundError: No module named
- python - keras的逻辑回归分类器
- python - windows脚本重新排序和替换xml文件中的文本?
- animation - 从 fbx 模型构建骨架