###前提・実現したいこと
計算アプリを作成していますが整数型の計算ができるのですが、
割り算の際にに小数点を表示させたく、試行錯誤しております。
四つのボタン(+,-,×,÷)に対して同じアクション設定をに作成しておりできるだけ簡易なコードにするためにtagで管理し、同じメソッドで条件分岐をして作成しています。すべてのメソッド自体は変更せずにDouble型に変換し計算する方法があればご教授頂きたいです。
##計算アプリ、小数点表示なし
swift
1 2 3import UIKit 4 5class ViewController: UIViewController { 6 7 @IBOutlet weak var tfValue01: UITextField! 8 @IBOutlet weak var tfValue02: UITextField! 9 @IBOutlet weak var lbResult: UILabel! 10 11 //起動時に行うメソッド 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 // Do any additional setup after loading the view, typically from a nib. 15 } 16 17 //メモリエラー時に行うメソッド 18 override func didReceiveMemoryWarning() { 19 super.didReceiveMemoryWarning() 20 // Dispose of any resources that can be recreated. 21 } 22 23 //キーボードの確定ボタンを押した時に行うメソッド 24 @IBAction func pushRetrun(_ sender: Any) { 25 26 } 27 28 //四則演算キーを押した時のメソッド 29 @IBAction func doCalc(_ sender: UIButton) { 30 31 //テキストフィールドの値を定数を宣言(String型) 32 let str01 = tfValue01.text! 33 let str02 = tfValue02.text! 34 35 36 //String型から整数型に変換 37 let num01 = Int(str01)! 38 let num02 = Int(str02)! 39 40 41 var res = 0 42 43 //+ボタンを押した時 44 if sender.tag == 1{ 45 46 res = num01 + num02 47 48 } 49 //-ボタンを押した時 50 else if sender.tag == 2{ 51 52 res = num01 - num02 53 54 } 55 //×ボタンを押した時 56 else if sender.tag == 3{ 57 58 res = num01 * num02 59 60 } 61 //÷ボタンを押した時 62 else if sender.tag == 4{ 63 64 if num02 != 0 { 65 66 //num02が0ではない時は計算します 67 68 res = num01 / num02 69 70 } 71 72 else{ 73 //num02が0の時は入力できないと表示 74 lbResult.text = "0は入力できません" 75 return 76 } 77 78 79 } 80 81 //整数型から文字列型に変換 82 let res2 = String(res) 83 lbResult.text = res2 84 85 //キーボードが動作しないようにする 86 tfValue01.resignFirstResponder() 87 tfValue02.resignFirstResponder() 88 89 } 90 91 @IBAction func textClear(_ sender: Any) { 92 93 //値を空で返す 94 tfValue01.text = nil 95 tfValue02.text = nil 96 lbResult.text = nil 97 98 99 //キーボードが動作しないようにする 100 tfValue01.resignFirstResponder() 101 tfValue02.resignFirstResponder() 102 103 } 104 105} 106 107
###自分が変更してみたのですが
binaly operater '/' cannot be applied to two 'Float' operands
と怒られてしまいました。
###発生している問題・エラーメッセージ
binaly operater '/' cannot be applied to two 'Float' operands
###自分が変更したコード
swift
1// 2// ViewController.swift 3// myCalc 4// 5// Created by 松井 里衣 on 2016/12/28. 6// Copyright © 2016年 松井 里衣. All rights reserved. 7// 8 9import UIKit 10 11class ViewController: UIViewController { 12 13 @IBOutlet weak var tfValue01: UITextField! 14 @IBOutlet weak var tfValue02: UITextField! 15 @IBOutlet weak var lbResult: UILabel! 16 17 //起動時に行うメソッド 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 // Do any additional setup after loading the view, typically from a nib. 21 } 22 23 //メモリエラー時に行うメソッド 24 override func didReceiveMemoryWarning() { 25 super.didReceiveMemoryWarning() 26 // Dispose of any resources that can be recreated. 27 } 28 29 //キーボードの確定ボタンを押した時に行うメソッド 30 @IBAction func pushRetrun(_ sender: Any) { 31 32 } 33 34 //四則演算キーを押した時のメソッド 35 @IBAction func doCalc(_ sender: UIButton) { 36 37 //テキストフィールドの値を定数を宣言(String型) 38 let str01 = tfValue01.text! 39 let str02 = tfValue02.text! 40 41 42 //String型から整数型に変換 43 let num01 = Int(str01)! 44 let num02 = Int(str02)! 45 46 47 //整数型からDouble型に変換 48 let num03 = Double(str01)! 49 let num04 = Double(str02)! 50 51 52 var res = 0 53 54 //+ボタンを押した時 55 if sender.tag == 1{ 56 57 res = num01 + num02 58 59 } 60 //-ボタンを押した時 61 else if sender.tag == 2{ 62 63 res = num01 - num02 64 65 } 66 //×ボタンを押した時 67 else if sender.tag == 3{ 68 69 res = num01 * num02 70 71 } 72 //÷ボタンを押した時 73 else if sender.tag == 4{ 74 75 if num02 != 0 { 76 77 //num02が0ではない時は計算します 78 79 res = num03 / num04 80 81 } 82 83 else{ 84 //num02が0の時は入力できないと表示 85 lbResult.text = "0は入力できません" 86 return 87 } 88 89 90 } 91 92 //整数型から文字列型に変換 93 let res2 = String(res) 94 lbResult.text = res2 95 96 //キーボードが動作しないようにする 97 tfValue01.resignFirstResponder() 98 tfValue02.resignFirstResponder() 99 100 } 101 102 @IBAction func textClear(_ sender: Any) { 103 104 //値を空で返す 105 tfValue01.text = nil 106 tfValue02.text = nil 107 lbResult.text = nil 108 109 110 //キーボードが動作しないようにする 111 tfValue01.resignFirstResponder() 112 tfValue02.resignFirstResponder() 113 114 } 115 116} 117 118
###(swift3/Xcode8)
もし詳しいコードを見ていただけるのであれば
https://github.com/RieMatsui/Xcodeにgithubにファイルをあげていますのでよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/29 13:16