在swift2中尝试我的第一次简单尝试计算,但我似乎无法做到正确。
我有一个名为ValueA的UITextField输入
我想对该输入进行以下计算(我可以有小数)
(((ValueA * ValueA)+3)*1.36)
结果必须返回最多两位小数的数字。
我尝试过以下方法:
let kw = 1.36
let three: Double = 3
var a: Double = NSString(string: ValueA.text!).doubleValue
var b: Double = NSString(string: ValueB.text!).doubleValue
var answer:Double = (((a * a) + three) * kw)
let answerFormatter = NSNumberFormatter()
answerFormatter.minimumFractionDigits = 2
answerFormatter.maximumFractionDigits = 2
let Ranswer = answerFormatter.stringFromNumber(answer)!
Result.text = Ranswer`
它有点工作,但有时我的模拟器崩溃,有时它得到我正确的答案,但更多的小数为零,例如:45.23000000(而不是45.23)
有人可以清理我的代码吗?答案需要回到文本领域。请记住,我是一个快速的新手:)
答案 0 :(得分:1)
你可以使用这样的东西
let kw = 1.36
let three: Double = 3
var a = Double(ValueA.text!)!
var b = Double(ValueB.text!)!
var answer = (((a * a) + three) * kw)
let Ranswer = String(format:"%.2f", answer)
Result.text = Ranswer
你确定要做a * a
吗?而不是a * b
。只是确保,因为你没有在任何地方使用b
您也可以使用
let Ranswer = Double(round(100 * answer)/100)
Result.text = String(Ranswer)
信息来源:link
答案 1 :(得分:0)
您假设始终在ValueA
和ValueB
中输入有效数字。这是崩溃的一个可能来源。更好地检查文本是否可以转换为数字。
试试这个(未经测试):
let kw = 1.36
let three = 3.0
if let a = Double(ValueA.text!), b = Double(ValueB.text!) {
let answer = (((a * a) + three) * kw)
let answerFormatter = NSNumberFormatter()
answerFormatter.minimumFractionDigits = 2
answerFormatter.maximumFractionDigits = 2
let Ranswer = answerFormatter.stringFromNumber(answer)!
Result.text = Ranswer
} else {
print("You must enter a number into ValueA and ValueB")
}