我在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舍入吗?谢谢。
发布于 2017-01-04 03:21:31
表达式使用整数除法,因为操作数是整数。试一试:
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在插入Double初始化程序之前被计算为1。
但是,这段代码将为answer提供1.5的值。
let answer = Double(3.0 / 2.0)这是因为3.0 / 2.0将根据Double的除法操作而不是Integer的除法操作进行评估。
https://stackoverflow.com/questions/41455572
复制相似问题