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.5ではなく1.0を出力します。

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 / 21Double

ただし、このコードでは次answerの値が得られ1.5ます。

let answer = Double(3.0 / 2.0)

これは、 の除算ではなく、 の3.0 / 2.0除算に基づいて評価されるためです。DoubleInteger

于 2017-01-04T03:21:31.717 に答える