Como evitar erros de ponto flutuante?

Eu estava tentando escrever uma função para aproximar as raízes quadradas (eu sei que há o módulo de matemática ... eu quero fazer isso sozinho), e eu estava me ferrando com a aritmética de ponto flutuante. Como você pode evitar isso?

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

Usando isto tem estes resultados:

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

Eu percebo que eu poderia usarround(), mas eu quero ser capaz de fazer isso realmente preciso. Eu quero ser capaz de calcular 6 ou 7 dígitos. Isso não seria possível se eu estivesse contornando. Eu quero entender como lidar adequadamente com cálculos de ponto flutuante no Python.

questionAnswers(1)

yourAnswerToTheQuestion