1

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

4

1 回答 1

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评估。1Double

但是,此代码将给出answer以下值1.5

let answer = Double(3.0 / 2.0)

这是因为3.0 / 2.0将基于除法运算Double而不是除法运算进行评估Integer

于 2017-01-04T03:21:31.717 回答