在Swift中将分数转换为UITextField的小数

时间:2015-05-07 00:39:50

标签: ios swift uitextfield

是否可以将输入UITextField的分数转换为小数?

到目前为止,这是我尝试过的。如果我在2/3进入我的UITextField,我得到2.0作为我的答案。

    @IBOutlet weak var answer: UITextField!

    var sAnswer = (answer.text as NSString).doubleValue

    println(sAnswer)

如果我只是使用它,我会得到2/3,但它是一个字符串,而不是0.6666666666的小数答案......

    @IBOutlet weak var answer: UITextField!

    var sAnswer = answer.text as NSString

    println(sAnswer)

4 个答案:

答案 0 :(得分:1)

没有。文本将始终是一个字符串。但你可以做的是,为你的UITextField做一个扩展,你可以在/分割你的字符串并将其除去。然后返回双值。像那样:

extension UITextField {
    var xo: Double! {
        get {
            var value = self.text.componentsSeparatedByString("/")
            return (value[0] as NSString).doubleValue / (value[1] as NSString).doubleValue
        }
    }
}

然后你就这样使用它:

answer.doubleValue

答案 1 :(得分:1)

您需要解析然后在方法或扩展中自己计算分数。一种做法如下:

extension UITextField {

    var fraction: Float {
        var comps = text.componentsSeparatedByString("/")

        //Do some validation here so as to check the correct format of fraction text.

        var op1 = NSString(string: comps[0]).floatValue
        var op2 = NSString(string: comps[1]).floatValue

        return op1/op2
    }
}

答案 2 :(得分:0)

更现代的Swift 5解决方案:

func parse(fractionString: String) -> Float? {
    guard fractionString.range(of: "^\\d+\\/\\d+$", options: .regularExpression) != nil else { return nil }

    let components = fractionString.split(separator: "/")
    if let numerator = Float(components[0]),
        let denominator = Float(components[1]),
        denominator != 0 {

        return numerator / denominator
    }
    
    return nil
}

开头的正则表达式检查只是确保输入字符串只是数字,中间是一个“ /”。

答案 3 :(得分:0)

SWIFT 5.3

var分数:字符串=“ 1/3”

var new = fraction.components(separatedBy:“ /”)

打印(新)

[“ 1”,“ 3”]

从这一点开始,您可以返回除法结果。我提供此答案的原因是,在较新版本的swift中,“分隔符”符号已更改。


func convertStringToFraction(stringNumber:String)->浮动{

let stringFloat = stringNumber.components(separatedBy: "/")
let numerator = Float(stringFloat[0])!
let denominator = Float(stringFloat[1])!

return numerator / denominator

}