如何阻止NSExpression四舍五入

时间:2017-01-04 03:01:08

标签: swift3 nsexpression

我在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进行舍入?感谢。

1 个答案:

答案 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的除法运算进行评估。