0

The question I have is how do I get my "calculated" and "calculatedTotal" variables to display their results to only two decimal places?

@IBOutlet weak var calculateLabel: UILabel!

@IBOutlet weak var calculateTotalLabel: UILabel!

@IBAction func calculateButton(sender: UIButton) {



    var calculated = correctNumber / (correctNumber + incorrectNumber) * 100
    calculateLabel.text = ("\(calculated)% without cues.")



    var calculatedTotal = correctNumber / (correctNumber + incorrectNumber + verbalNumber + visualNumber + tactileNumber) * 100
           calculateTotalLabel.text = "\(calculatedTotal)% without cues."


}

2 Answers2

3

You can use C-like format specifier in Swift as follows:

println(String(format: "%.2f", myFloat))

Or

calculatedTotal.text = String(format: "%.2f", myFloat)
clearlight
  • 12,255
  • 11
  • 57
  • 75
2

When formatting a number for the end user, I would recommend using NSNumberFormatter, which honors the user's current NSLocale. For example, to format these numbers to two decimal places, you might do something like:

@IBAction func calculateButton(sender: UIButton) {
    let formatter = NSNumberFormatter()
    formatter.minimumFractionDigits = 2
    formatter.maximumFractionDigits = 2

    let calculated = correctNumber / (correctNumber + incorrectNumber) * 100.0
    calculateLabel.text = ("\(formatter.stringFromNumber(calculated)!)% without cues.")

    let calculatedTotal = correctNumber / (correctNumber + incorrectNumber + verbalNumber + visualNumber + tactileNumber) * 100.0
    calculateTotalLabel.text = "\(formatter.stringFromNumber(calculatedTotal)!)% without cues."
}
Rob
  • 415,655
  • 72
  • 787
  • 1,044
  • Results keep displaying: Optional ("123")% without cues. – user3316299 Apr 02 '15 at 00:22
  • @user3316299 Whenever you get an optional like that, you just have to unwrap it, like I have in my revised answer. Just add `!` (assuming you know it's not going to be `nil`), like shown above. If you're not sure if it's going to be `nil` or not, then one would generally do optional binding (see optional binding section of [The Swift Programming Language](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309)). By the way, I assume that you are seeing the decimal place in the answer. – Rob Apr 02 '15 at 01:51