2016-04-08 8 views
-2

Ich arbeite an einem kleinen Mathe-Checker mit Python und alles funktioniert gut, außer Divisionen. Problem: Der Quotient mit zwei Dezimalstellen (2/3 = 0.67), float, ist gleich einem Eingang (0.67). Aber die if-Anweisung, die ich verwende, um die Eingabe eines Benutzers mit dem Ergebnis zu vergleichen, sagt, dass es nicht gleich ist.Python: Quotient ungleich einer Variablen mit dem gleichen Wert

Annahme: Das Problem ist im Zusammenhang mit float.

Mein Code:

result = float(value0/value1) 
result = round(result,2) 

value3 = input("Number 1") 
value3 = float(value3) 

if result != value3: 
    print "Wrong!" 
    print result 
elif result == value: 
    print "Right!" 

Natürlich habe ich eine Funktion mit einem anderen Ansatz schaffen könnte, aber ich bin neugierig, zu verstehen, warum es nicht funktioniert.

Wenn es einen ähnlichen Thread gibt, posten Sie den Link und schließen Sie diesen. Danke für jede Hilfe.

+3

Aber 2/3 Überprüfung ist auf 0,67 nicht gleich. – kindall

+0

Ich empfehle, stattdessen das Modul 'decimal' zu verwenden. https://docs.python.org/3/library/decimal.html#decimal.Decimal –

+0

Rick: Danke für den Link. kindall: Ich beziehe mich auf das gerundete Ergebnis von 2/3 mit zwei Dezimalstellen. Ich weiß also, dass es einen Unterschied zwischen 0.666666 ... (oder 2/3) und 0.67 gibt. – canguru

Antwort

1

wenn Schwimmer für die Gleichstellung immer Verwendung

equal_threshold = 1e-5 
if abs(result-value)<equal_threshold: 
+0

Danke, Joran. Das ist was ich brauche. – canguru

Verwandte Themen