如何阻止 NSExpression 舍入

How to stop NSExpression from rounding

我一直在 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 舍入?谢谢

表达式使用整数除法,因为您的操作数是整数。试试这个:

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 的除法运算求值。