前提・実現したいこと
電卓アプリの小数点以下が0の時に小数点以下を切り捨てる処理をしたいです。
まず、計算結果が少数を含む場合を考えています
発生している問題・エラーメッセージ
'%' is unavailable: For floating point numbers use truncatingRemainder instead
該当のソースコード
let isIntegerP = floor(previousNumver) == previousNumver let isIntegerN = floor(numberOnScreen) == numberOnScreen if previousNumver % numberOnScreen != 0 || isIntegerP == false || isIntegerN == false { result.text = String(format:"%.0f",result.text ?? 0 )
以下コード全文
import UIKit
import Foundation
class ViewController: UIViewController {
var numberOnScreen:Double = 0; var previousNumver:Double = 0; var performingMath:Bool = false var operation = 0; @IBOutlet weak var formula: UILabel! @IBOutlet weak var result: UILabel! @IBOutlet weak var buttonA: UIButton! @IBAction func numbers(_ sender: UIButton) { if performingMath == true { switch (sender.tag) { case 1...10: result.text = String(sender.tag-1) formula.text! += String(sender.tag-1) numberOnScreen = Double(result.text!)! performingMath = false default: formula.text! += "." result.text! += "." buttonA.isEnabled = false } } else { switch (sender.tag) { case 1...10: result.text! += String(sender.tag-1) formula.text! += String(sender.tag-1) numberOnScreen = Double(result.text!)! default: formula.text! += "." result.text! += "." buttonA.isEnabled = false } } } @IBAction func root(_ sender: UIButton) { if formula.text != "" && sender.tag != 11 && sender.tag != 16 { previousNumver = Double(result.text!)! if sender.tag == 17{ formula.text! += "√" result.text = String(sqrt(previousNumver)) } else if sender.tag == 18{ formula.text! += "%" result.text = String(previousNumver / 100) } } } @IBAction func buttons(_ sender: UIButton) { // if formula.text != "" && sender.tag != 11 && sender.tag != 16 { previousNumver = Double(result.text!)! if sender.tag == 12{ result.text = "+" formula.text! += "+" } else if sender.tag == 13{ result.text = "-" formula.text! += "-" } else if sender.tag == 14{ result.text = "×" formula.text! += "×" } else if sender.tag == 15{ result.text = "÷" formula.text! += "÷" } operation = sender.tag performingMath = true buttonA.isEnabled = true } else if sender.tag == 16 { if operation == 12{ result.text = String(previousNumver + numberOnScreen) } else if operation == 13{ result.text = String(previousNumver - numberOnScreen) } else if operation == 14{ result.text = String(previousNumver * numberOnScreen) } else if operation == 15{ result.text = String(previousNumver / numberOnScreen) } let isIntegerP = floor(previousNumver) == previousNumver let isIntegerN = floor(numberOnScreen) == numberOnScreen if previousNumver % numberOnScreen != 0 || isIntegerP == false || isIntegerN == false { result.text = String(format:"%.0f",result.text ?? 0 ) } } else if sender.tag == 11{ result.text = "" formula.text = "" previousNumver = 0; numberOnScreen = 0; operation = 0; buttonA.isEnabled = true } } override func viewDidLoad() { result.text = "" formula.text = "" }
}
「'%' is unavailable: For floating point numbers use truncatingRemainder instead 」を無視しないであげてください
前の質問はなんだったのか‥?
https://teratail.com/questions/201363
あなたの回答
tips
プレビュー