Search code examples
timeswiftfloating-pointdivide

How to divide an entered time by a Float


So I'm making an app where you enter a time (1:32.40) and you then divide this time by a number (50). I made everything a Float so far, but that is clearly not right. How can I have the user enter the time like normal and then convert that to a Float that is easily divisible? My Calculation function currently looks like this

func calculation() -> Bool{
        raceDistance = txtRaceDistance.text
        practiceDistance = txtPracticeDistance.text
        goalTime = txtGoalTime.text

        var fGoalTime = (goalTime as NSString).floatValue
        var fRaceDistance = (raceDistance as NSString).floatValue
        var fPracticeDistance = (practiceDistance as NSString).floatValue

        dividedDistance = fRaceDistance / fPracticeDistance
        answer = fGoalTime / dividedDistance

        var answerFormat : NSString = NSString(format: "%0.2f", answer)

        lblAnswer.text = String(answerFormat)

        return true
    }

fGoalTime is the only problem, because the user will be typing in something like (1:20.40)


Solution

  • I am assuming that you get an error for this line or just not the correct number. var fGoalTime = (goalTime as NSString).floatValue you will need to write a helper function timeStringToFloat(String) -> Float

    In there you will want to use String.componentsSeparatedByString() maybe something like this:

    func timeStringToFloat(timeString: String) -> Float {
        let milliseconds = timeString.componentsSeparatedByString(".")[1]
        let seconds = timeString.componentsSeparatedByString(.)[0].componentsSepatatedByString(":")[1]
        let minutes = timeString.componentsSeparatedByString(":")[0]
    
        //now we have them all as String
        //maybe covert to float then add
        let time = Float(minutes) * 60 + Float(seconds) + Float("0."+milliseconds)
        return time
    
    }