質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

2564閲覧

swiftでのデータ型の変換ができません

RieMatsui

総合スコア27

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2016/12/29 11:27

編集2016/12/29 11:37

###前提・実現したいこと
計算アプリを作成していますが整数型の計算ができるのですが、
割り算の際にに小数点を表示させたく、試行錯誤しております。
四つのボタン(+,-,×,÷)に対して同じアクション設定をに作成しておりできるだけ簡易なコードにするために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にファイルをあげていますのでよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

var res = 0としているのでresInt型になります、そこに割り算の場合のみFloat型を入れようとしている為エラーになります。

resString型として処理をすれば問題無いです。

swift

1//四則演算キーを押した時のメソッド 2@IBAction func doCalc(_ sender: UIButton) { 3 4 //テキストフィールドの値を定数を宣言(String型) 5 let str01 = tfValue01.text! 6 let str02 = tfValue02.text! 7 8 9 //String型から整数型に変換 10 let num01 = Int(str01)! 11 let num02 = Int(str02)! 12 13 14 var res = "" 15 16 //+ボタンを押した時 17 if sender.tag == 1{ 18 19 res = String(num01 + num02) 20 21 } 22 //-ボタンを押した時 23 else if sender.tag == 2{ 24 25 res = String(num01 - num02) 26 27 } 28 //×ボタンを押した時 29 else if sender.tag == 3{ 30 31 res = String(num01 * num02) 32 33 } 34 //÷ボタンを押した時 35 else if sender.tag == 4{ 36 37 if num02 != 0 { 38 39 //num02が0ではない時は計算します 40 41 res = String(Float(num01) / Float(num02)) 42 43 } 44 45 else{ 46 //num02が0の時は入力できないと表示 47 lbResult.text = "0は入力できません" 48 return 49 } 50 } 51 52 lbResult.text = res 53 54 //キーボードが動作しないようにする 55 tfValue01.resignFirstResponder() 56 tfValue02.resignFirstResponder() 57}

投稿2016/12/29 12:19

編集2016/12/29 12:20
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RieMatsui

2016/12/29 13:16

_Kentarou様 非常にわかりやすい解説ありがとうございました。 解決しました。勉強始めたばかりで簡単な質問にこんなに丁寧に解説していただき非常に感謝しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問