在Swift2中进行简单的计算

时间:2016-06-23 06:52:14

标签: ios swift2

在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)

有人可以清理我的代码吗?答案需要回到文本领域。请记住,我是一个快速的新手:)

2 个答案:

答案 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)

您假设始终在ValueAValueB中输入有效数字。这是崩溃的一个可能来源。更好地检查文本是否可以转换为数字。

试试这个(未经测试):

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")
}