Bonsoir
Dans l’application calculatrice on ne peut pas utiliser la fonction DotSet, pour gérer la saisie des nombres à virgules ?
Faut-il faire une fonction séparée qui va gérer la la saisie de lnombres à virgule ?
Salut Stéphan,
Il existe plusieurs moyens de gérer les nombres à virgule.
Tu peux tout simplement faire une action sur un nouveau bouton virgule.
Pour le didSet dont tu parles je ne suis pas certain de comprendre ce que tu veux dire
Bonjour Maxime,
Voilà pour :
@IBAction func() _numberDecimal {
}
Maintenant le plus compliqué c’est de récupérer la partie décimale du double ?
Oui c’est pour ça que je ne l’ai pas fait dans la première partie du cours. Il n’y a rien d’insurmontable mais ça complexifie l’app et comme il s’agit du premier chapitre je ne voulais pas décourager les débutants.
Encore une fois il existe plusieurs moyens de le faire.Garde à l’esprit que les saisies se font chiffre par chiffre donc par exemple, si la personne a tapé le chiffre 5, puis la virgule et le chiffre 8 tu dois alors obtenir 5.8
Soit 5 + (8/10).
Si elle tape un autre chiffre 2 après la virgule il faut encore l’ajouter à la fin :
5 + (8/10) + (2/100) -> 5,82
J’ai bien compris ton explication mais je n’y arrive pas.
Depuis hier je suis dessus, mais le bloque.
Tu pourrais m’aiguiller un peu STP ?
Voici la partie du code :
@IBAction func numberDecimal(_ sender: UIButton) {
_shouldNumDecimal = true
_numdecim = _currentNumber
//ui_currentNumberLabel.text = « (_numdecim) »
}
@IBAction func digitButtonTouchedUpInside(_ sender: UIButton) {
if _shouldNumDecimal == true {
_currentNumber = (_currentNumber + Double(sender.tag) / 10 )
}
else if _shouldResetCurrentNumber == true {
_currentNumber = Double(sender.tag)
_shouldResetCurrentNumber = false
}
else { _currentNumber = (_currentNumber * 10 ) + Double(sender.tag)
}
}
Bon j’ai fini par y arriver.
Voici mon code :
//
// ViewController.swift
// ABCalc
//
// Created by Alban BERNARD on 07/09/2017.
// Copyright © 2017 AB Production :). All rights reserved.
//
import UIKit
class ViewController: UIViewController {
var _shouldResetCurrentNumber = true
var _shouldNumDecimal = false
var _operationType : Character = " "
var _decim : Double = 1
var _numdecim : Double = 0
var _previousNumber : Double = 0
var _currentNumber : Double = 0 {
didSet {ui_currentNumberLabel.text = “(_currentNumber)”
}
}
func resetdecimal () {
_shouldNumDecimal = false
_decim = 1
_numdecim = 0
}
func performWaitingCalculous() {
let result:Double
if _operationType == "+" {
result = _previousNumber + _currentNumber
} else if _operationType == "-" {
result = _previousNumber - _currentNumber
} else if _operationType == "*" {
result = _previousNumber * _currentNumber
} else if _operationType == "/" {
result = _previousNumber / _currentNumber
} else { result = _currentNumber
}
ui_currentNumberLabel.text = "\(result)"
_previousNumber = result
_shouldResetCurrentNumber = true
}
@IBOutlet weak var ui_currentNumberLabel: UILabel!
@IBAction func resetValueButton(_ sender: UIButton) {
_previousNumber = 0
_currentNumber = 0
_operationType = " "
resetdecimal()
}
@IBAction func changeSignButton(_ sender: UIButton) {
if _shouldResetCurrentNumber == true {
_currentNumber = _previousNumber}
_currentNumber = _currentNumber * -1
_shouldResetCurrentNumber = false
}
@IBAction func applyPercentButton(_ sender: UIButton) {
if _shouldResetCurrentNumber == true {
_currentNumber = _previousNumber}
_currentNumber = _currentNumber / 100
_shouldResetCurrentNumber = false
}
@IBAction func substractButton(_ sender: UIButton) {
if _shouldResetCurrentNumber == false {
performWaitingCalculous()
}
_operationType = "-"
resetdecimal()
}
@IBAction func divisionButton(_ sender: UIButton) {
if _shouldResetCurrentNumber == false {
performWaitingCalculous()
}
_operationType = "/"
resetdecimal()
}
@IBAction func multiplyButton(_ sender: UIButton) {
if _shouldResetCurrentNumber == false {
performWaitingCalculous()
}
_operationType = "*"
resetdecimal()
}
@IBAction func additionButton(_ sender: UIButton) {
if _shouldResetCurrentNumber == false {
performWaitingCalculous()
}
_operationType = "+"
resetdecimal()
}
@IBAction func resultButton(_ sender: UIButton) {
performWaitingCalculous()
}
@IBAction func digitButtonTouchedUpInside(_ sender: UIButton) {
if _shouldNumDecimal == true {
_decim = _decim * 10
_numdecim = Double(sender.tag)
_currentNumber = _currentNumber + (_numdecim / _decim)
ui_currentNumberLabel.text = "\(_currentNumber)"
}
else if _shouldResetCurrentNumber == true {
_currentNumber = Double(sender.tag)
_shouldResetCurrentNumber = false
}
else { _currentNumber = (_currentNumber * 10 ) + Double(sender.tag)
}
}
@IBAction func numberDecimal(_ sender: UIButton) {
_shouldNumDecimal = true
// _numdecim = _currentNumber
//ui_currentNumberLabel.text = “(_numdecim)”
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}