Wie vermeide ich Gleitkommafehler?

Ich habe versucht, eine Funktion zur Approximation von Quadratwurzeln zu schreiben (ich weiß, dass es das Mathematikmodul gibt ... ich möchte es selbst tun) und wurde von der Gleitkomma-Arithmetik durcheinander gebracht. Wie können Sie das vermeiden?

def sqrt(num):
    root = 0.0
    while root * root < num:
        root += 0.01
    return root

Wenn Sie dies verwenden, werden die folgenden Ergebnisse erzielt:

>>> sqrt(4)
2.0000000000000013
>>> sqrt(9)
3.00999999999998

Mir ist klar, dass ich es einfach gebrauchen könnteround(), aber ich möchte das wirklich genau machen können. Ich möchte mit 6 oder 7 Ziffern rechnen können. Das wäre nicht möglich, wenn ich runden würde. Ich möchte verstehen, wie Gleitkommaberechnungen in Python richtig gehandhabt werden.