如何从四舍五入停止NS[removed]How to stop NSExpression from

2019-09-30 11:52发布

我一直在做一个计算器斯威夫特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? 谢谢。

Answer 1:

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

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初始化。

但是,此代码将使answer1.5

let answer = Double(3.0 / 2.0)

这是因为, 3.0 / 2.0将基于用于除法运算来评价Double取代的除法运算Integer



文章来源: How to stop NSExpression from rounding