2017-01-04 3 views
0

Ich habe einen Rechner in Swift 3 gemacht, aber habe einige Probleme bekommen.Wie man NSExpression von der Rundung stoppt

Ich habe NSExpression verwendet, um die Benutzergleichung zu berechnen, aber die Antwort wird immer gerundet.

Um zu überprüfen, ob die Antwort gerundet wurde, berechnete ich 3/2.

let expression = NSExpression(format: "3/2"); 
let answer: Double = expression.expressionValue(with: nil, context: nil) as! Double; 
Swift.print(String(answer)); 

Der obige Code Ausgänge 1,0 statt 1,5.

Weiß jemand, wie man NSExpression von der Rundung stoppt? Vielen Dank.

Antwort

2

Der Ausdruck verwendet Ganzzahldivision, da Ihre Operanden Ganzzahlen sind. Versuchen Sie stattdessen:

let expression = NSExpression(format: "3.0/2.0"); 
let answer: Double = expression.expressionValue(with: nil, context: nil) as! Double; 
Swift.print(String(answer)); 

den folgenden Code vor:

let answer = Double(3/2) 

answer in diesem Fall noch 1.0 seit 3/2-1 ausgewertet würden, bevor sie im Double initializer eingeführt wird.

Allerdings würde dieser Code geben answer den Wert von 1.5:

let answer = Double(3.0/2.0) 

Dies liegt daran, 3.0/2.0 für Double anstelle der Divisionsoperation von Integer basierend auf die Divisionsoperation ausgewertet werden.

+1

Danke für die Hilfe –