2017-01-04 4 views
0

私はSwift 3で電卓を作っていましたが、いくつかの問題がありました。NSExpressionの丸めを停止する方法

私は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の丸めを停止する方法を知っていますか?ありがとう。

答えて

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はまだ3/2Double初期化子に挿入される前に1に評価され1.0以来だろう。

しかし、このコードはanswer1.5の値を与える:

let answer = Double(3.0/2.0) 

3.0/2.0代わりIntegerの除算演算のDoubleための除算演算に基づいて評価されるであろうからです。

+1

ありがとうございました –

関連する問題