¿Cómo evitar errores de punto flotante?

Estaba intentando escribir una función para aproximar las raíces cuadradas (sé que está el módulo matemático ... quiero hacerlo yo mismo), y la aritmética de punto flotante me estaba jodiendo. ¿Cómo puedes evitar eso?

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

Usando esto tiene estos resultados:

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

Me doy cuenta de que solo podría usarround(), pero quiero poder hacer esto realmente preciso. Quiero poder calcular hasta 6 o 7 dígitos. Eso no sería posible si estoy redondeando. Quiero entender cómo manejar correctamente los cálculos de punto flotante en Python.

Respuestas a la pregunta(1)

Su respuesta a la pregunta