我在Swift 3中制作了一个计算器,但遇到了一些问题。
我一直在使用 NSExpression 来计算用户等式,但答案总是四舍五入。
为了检查答案是否四舍五入,我计算了 3/2 。
let expression = NSExpression(format: "3 / 2");
let answer: Double = expression.expressionValue(with: nil, context: nil) as! Double;
Swift.print(String(answer));
以上代码输出 1.0 ,而不是 1.5 。
有谁知道如何阻止NSExpression进行舍入?感谢。
答案 0 :(得分:2)
表达式使用整数除法,因为您的操作数是整数。试试这个:
let expression = NSExpression(format: "3.0 / 2.0");
let answer: Double = expression.expressionValue(with: nil, context: nil) as! Double;
Swift.print(String(answer));
请考虑以下代码:
let answer = Double(3 / 2)
在这种情况下, answer
仍然是1.0
,因为3 / 2
在插入1
初始值设定项之前会被评估为Double
。
但是,此代码会为answer
提供1.5
的价值:
let answer = Double(3.0 / 2.0)
这是因为3.0 / 2.0
将根据Double
的除法运算而不是Integer
的除法运算进行评估。