是否可以将输入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)
答案 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
}