gpt4 book ai didi

swift - 如何格式化我的号码?

转载 作者:行者123 更新时间:2023-11-28 08:07:55 24 4
gpt4 key购买 nike

var displayValue: Double {
get {
return Double(display.text!)!
}

set {
display.text = formatCurrency(value: newValue)
}
}

func formatCurrency(value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.alwaysShowsDecimalSeparator = false
formatter.decimalSeparator = ","
formatter.maximumFractionDigits = 2;
formatter.locale = Locale(identifier: Locale.current.identifier)
let result = formatter.string(from: value as NSNumber);
return result!;
}

private var brain = CalculatorBrain()

@IBAction func touchDigit(_ sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTyping {
let textCurrentlyInDisplay = display.text!
display.text = textCurrentlyInDisplay + digit
} else {
display.text = digit
userIsInTheMiddleOfTyping = true
}
}

每当我触摸我的按钮时,标签都不会更新。我想让“显示标签”看起来不错,所以我使用了 NumberFormatter 并为我的格式化程序设置了属性

我试过了

let result = String(displayValue) + formatter.string(from: value as NSNumber)!;

在我的 formatCurreny 函数中,但我的应用程序的行为不允许我按 +、-(或操作键)

最佳答案

因为您在 setter 中为 displayValue 设置了 display 标签的格式,但您从未设置该属性。

如果您希望计算器的显示看起来“漂亮”,您需要管理 3 个变量:

  • 未格式化文本,用于将数字附加到显示
  • 格式化文本,您希望在带有小数点分隔符等的标签上显示
  • displayValue,一个用于CalculatorBrain
  • Double

您可以围绕未格式化 文本设计其他 2 个变量,如下所示:

var unformattedText: String = "" {
didSet {
display.text = formatCurrency(value: displayValue)
}
}
var displayValue: Double {
get {
return Double(unformattedText)!
}
set {
unformattedText = String(newValue)
}
}

@IBAction func touchDigit(_ sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTyping {
unformattedText += digit
} else {
unformattedText = digit
userIsInTheMiddleOfTyping = true
}
}

关于swift - 如何格式化我的号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com