Ich möchte vermeiden, dass mein Code eine fast ganze Zahl für eine ganze Zahl verwechselt. Zum Beispiel hat 58106601358565889 als Quadratwurzel 241,053,109.00000001659385359763188, aber wenn ich den folgenden Booleschen Test verwendet, 58106601358565889 täuschte mich zu denken, dass es ein perfekter Platz war:Große Ganzzahlen von nahen Ganzzahlen in Python unterscheiden
a = 58106601358565889
b = math.sqrt(a)
print(b == int(b))
Die Genauigkeit ist nicht unbedingt das Problem, denn wenn ich re-check, erhalte ich die richtige (false) Schlussfolgerung:
print(a == b**2)
Was wäre ein besserer Weg für einen echten Vergleich zu einem in der Nähe integer zu testen? Die math.sqrt ist in einer anderen Definition in meinem Code vergraben, und ich möchte es vermeiden, wenn möglich eine Überprüfung einer Quadratwurzel einzufügen. Ich entschuldige mich, wenn das keine gute Frage ist; Ich bin neu in Python.
Sollte es "wahr" zurückgeben, ist das was du willst? – styvane
Es sollte False zurückgeben, Wenn mein Verständnis korrekt ist – Backtrack
Der erste Druck (b == int (b)) Ich möchte falsch sein. – Jeptha