8/23 기준 코드
import UIKit
class ViewController: UIViewController {
@IBOutlet var ACbutton: UIButton!
@IBOutlet var lblResult: UILabel!
var currentNum:Double = 0.0
var currentOperator = ""
var firstOperand:Double = 0.0
var result:Double = 0.0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func getNum(_ sender: UIButton) {
let digit = sender.tag
currentNum = currentNum * 10 + Double(digit)
updateDisplay()
if currentNum != 0{
ACbutton.setTitle("C", for: .normal)
}
}
@IBAction func getOperator(_ sender: UIButton) {
if currentOperator == ""{
if firstOperand == 0{
firstOperand = currentNum
}else {
doCalculate()
}
currentNum = 0
let tmp = sender.tag
switch tmp{
case 1:
currentOperator = "÷"
case 2:
currentOperator = "X"
case 3:
currentOperator = "-"
case 4:
currentOperator = "+"
default:
break
}
}else{
}
}
//계산기능
func doCalculate(){
switch currentOperator{
case "+":
result = firstOperand + currentNum
case "-":
result = firstOperand - currentNum
case "X":
result = firstOperand * currentNum
case "÷":
if currentNum != 0 {
result = firstOperand / currentNum
} else {
lblResult.text = "Error"
return
}
default:
break
}
currentNum = result
updateDisplay()
firstOperand = result
currentOperator = ""
}
// 화면 표시 업데이트, 소숫점이 있을 때만 소숫점 표시
func updateDisplay() {
if currentNum.truncatingRemainder(dividingBy: 1) == 0{
let formattedValue = String(format: "%.0f", currentNum)
lblResult.text = formattedValue
}else{
lblResult.text = "\(currentNum)"
}
}
// = 버튼을 클릭했을 때
@IBAction func showResult(_ sender: UIButton) {
doCalculate() //계산 결과를 보여줌
}
// C 버튼을 클릭했을 때 초기화
@IBAction func clearButtonTapped(_ sender: UIButton) {
currentNum = 0
firstOperand = 0
currentOperator = ""
updateDisplay()
ACbutton.setTitle("AC", for: .normal)
}
//+/- 버튼 클릭했을 때
@IBAction func changeSign(_ sender: UIButton) {
currentNum *= -1
updateDisplay()
}
// % 버튼을 클릭했을 때
@IBAction func btnPercent(_ sender: UIButton) {
currentNum /= 100
updateDisplay()
}
// #TODO . 버튼을 클릭했을 때
@IBAction func btnDot(_ sender: UIButton) {
if currentNum.truncatingRemainder(dividingBy: 1) != 0 {
return
}else{
}
updateDisplay()
}
}