前提・実現したいこと
健康管理アプリを開発しています。
平熱温度と入力体温(本日の体温)との差分を計算し、
差分に応じた画像を表示したいのですが表示されません。
if文でのDouble型数値同士の計算方法について具体的に教えていただけると嬉しいです。
(ソースコードの説明)
numberRow・・・入力体温(本日の体温)
heinetuRow・・・平熱温度
該当のソースコード
Swift
1 2class healthViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 3 4 @IBOutlet weak var healthTableView : UITableView! 5 6 var healthNumber1 = [Double]() 7 8 var heinetuDate = [Double]() 9 10 var numberRow : Double = 0.0 11 12 var heinetuRow : Double = 0.0 13 14 var healthNum : Double = 0.0 15 16 var heinetuNum : Double = 0.0 17 18 var add2HealthNumber : Double = 0.0 19 20 var add2HeinetuNumber : Double = 0.0 21 22 override func viewDidLoad() { 23 super.viewDidLoad() 24 25 add2HealthNumber = numberRow 26 print(numberRow) 27 28 add2HeinetuNumber = heinetuRow 29 print(heinetuRow) 30 31 let nib = UINib(nibName: "healthTableViewCell", bundle: nil) 32 healthTableView.register(nib, forCellReuseIdentifier: "healthTableViewCell") 33 34 if #available(iOS 13.0, *) { 35 self.overrideUserInterfaceStyle = .light 36 } else { 37 // Fallback on earlier versions 38 } 39 } 40 41 override func viewDidAppear(_ animated: Bool) { 42 self.healthTableView.reloadData() 43 } 44 45 46 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 47 return 1 48 } 49 50 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 51 52 //変数を作る 53 let cell = tableView.dequeueReusableCell(withIdentifier: "healthTableViewCell") as! healthTableViewCell 54 //変数の中身を作る 55 if numberRow < heinetuRow + 3.9 { 56 57 cell.healthImage.image = UIImage(named: "Kenko") 58 } 59 if numberRow > heinetuRow + 4.0 { 60 61 cell.healthImage.image = UIImage(named: "Binetu") 62 } 63 if numberRow > heinetuRow + 9.0 { 64 65 cell.healthImage.image = UIImage(named: "Hatunetu") 66 } 67 if numberRow > heinetuRow + 14.0 { 68 69 cell.healthImage.image = UIImage(named: "Kounetu") 70 } 71 72 return cell 73 } 74 75 76 77 78}
試したこと
numberRowとheinetuRowの引き算は出来なかったので、heinetuRowを右側に持ってきて計算するようにしました。
補足情報(FW/ツールのバージョンなど)
Xcodeバージョン12.4
Double 型同士の演算は可能です。
https://developer.apple.com/documentation/swift/double/floating-point_operators_for_double
> numberRowとheinetuRowの引き算は出来なかったので、heinetuRowを右側に持ってきて計算するようにしました。
引き算ができなかった、と判断した理由はどのような理由でしょうか。
エラーがでたということでしょうか。それとも想定した通りの結果にならなかったということでしょうか。
最初に記述した内容と、エラがーで出たのであればその詳細も書いていただいた方がいいかと思います。
回答ありがとうございます。
すみません。引き算が出来なかったと記入したのですが、再度確認したところ出来ました。
その条件だと、numberRow が heinetuRow + 3.9 〜 heinetuRow + 4.0 の範囲だと何も表示されないのでは…。
体温データが小数第一位までなので問題ないかなと思ったのですが。
例えば heinetuRow が 36.0 で numberRow が 39.9 や 40.0 の場合は?
(39.9 に関しては誤差の関係で Kenko になる可能性があるかも知れませんが…。)
((ってか、平熱 36.0℃ の人が 39.8℃ でも健康ってどうなんでしょう。摂氏ですよね?))
ご指摘ありがとうございます。数値ミスをしておりました。差分4.0 9.0 14.0ではなく、0.4、0.9 1.4でした。
その差分が「より大きい (>)」なのか「以上 (>=)」なのかも確認した方がいいと思いますよ。
コメントが付いている間に図で説明をつくってしまいました。いつも入れ違いですいません。
図でわかりやすく説明していただきありがとうございます。
逆にいうと、「図示する」ことが自分にとってもわかりやすくなるということがわかっていただけるのではないでしょうか。
本当はベン図、それに加えてカルノー図が描けるようになると複雑な判定式も容易に記述することができますので、ぜひ調べてみてもらえますでしょうか。
わかりました。調べてみます。
回答1件
あなたの回答
tips
プレビュー