【问题标题】:App does not perform a simple calculation应用程序不执行简单的计算
【发布时间】:2018-01-17 11:13:58
【问题描述】:

Xcode screenshot

我有一个名为 BillSplitter 的简单应用程序,它可以计算要显示的账单:输入文本字段以显示用餐者人数、账单总额和小费... 当我运行应用程序时,grandTotal 输出无法正确计算...总数和小费不计算。

我的应用有 3 个 UITextfields 用餐人数、总用餐费用和小费。当我运行应用程序并在 3 个字段中输入数据并计算我的总计是正确的。例如,如果我输入。 2 位用餐者,晚餐费用为 60 美元,小费 10%。结果如下:用餐人数:2,小费金额$6.00,账单金额:$60.00,总计$70,每位用餐者支付$30。我应该得到的是总计 66 美元,每位用餐者支付 33 美元。

我的代码:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var dinersTextField: UITextField!  // number of diners
    @IBOutlet weak var totalCostTextField: UITextField! // bill total before
    @IBOutlet weak var resultTextLabel: UILabel!  // displays output of calculation
    @IBOutlet weak var tipTextField: UITextField!  // the tip

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func calculate(_ sender: Any) {
        if let dinerStr = dinersTextField.text, let tipStr = tipTextField.text, let totalStr =   totalCostTextField.text, let diner = Double(dinerStr), let tip = Double(tipStr), let total =  Double(totalStr) {
            let formattedDiners = String(format: "%.0f", diner)
            let formattedCost = String(format: "%.2f", total)
            let formattedTip = String(format: "%.2f", (total * tip) / 100)
            let formattedGTotal = String(format: "%.2f", (total + tip))
            let formattedDinerPays = String(format: "%.2f", (total / diner))

            resultTextLabel.text = "The number of diners: \(formattedDiners)\nAmount of Tip: $\(formattedTip)\nAmount of bill: $\(formattedCost)\nGrand Total: $\(formattedGTotal)\nEach diner pays: $\(formattedDinerPays)"
        }
    }
    /// hide keyboard
    @IBAction func dismissKeyboard(_ sender: Any) {
        view.endEditing(true)
    }
}

【问题讨论】:

  • 请在问题中发布您的代码,而不是代码图片。
  • 因不清楚而结束
  • 你的意思是不计算?为了使您的问题被视为主题,请在您的问题中包含预期的和实际的行为。一些示例输入/输出也会有所帮助。
  • 添加断点和调试以检查假定值
  • 我的应用有 3 个 UITextfields 用餐者人数、总餐费和小费。当我运行应用程序并在 3 个字段中输入数据并计算我的总计是正确的。例如,如果我输入。 2 位用餐者,晚餐费用为 60 美元,小费 10%。结果如下:用餐人数:2,小费金额$6.00,账单金额:$60.00,总计$70,每位用餐者支付$30。我应该得到的是总计 66 美元,每位用餐者支付 33 美元。希望这会有所帮助。

标签: ios swift


【解决方案1】:

你的数学有问题。您将小费百分比添加到总数而不是小费价值中,并且您将成本除以用餐者而不是成本 + 小费。

let formattedGTotal = String(format: "%.2f", (total + tip))
let formattedDinerPays = String(format: "%.2f", (total / diner))

在您的示例中,这意味着您总共有 60 美元和 10% 的小费,您所做的计算是 60 + 10 给您 70。然后要计算用餐者支付的费用,您正在做 60 / 2 给30岁的你。

您应该将这两行更改为以下内容:

let formattedGTotal = String(format: "%.2f", total + ((total * tip) / 100))
let formattedDinerPays = String(format: "%.2f", ((total + ((total * tip) / 100)) / diner))

您可以先用小费计算总数,然后重复使用它以提高效率:

let totalWithTip = total + ((total * tip) / 100)

然后您可以使用 totalWithTip 来计算用餐者使用的支付金额

let formattedDinerPays = String(format: "%.2f", (totalWithTip / diner))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2015-06-04
    • 2013-11-29
    相关资源
    最近更新 更多