Jak uniknąć błędów zmiennoprzecinkowych?
Próbowałem napisać funkcję przybliżającą pierwiastki kwadratowe (wiem, że istnieje moduł matematyczny ... chcę to zrobić sam), a ja zostałem przekręcony przez arytmetykę zmiennoprzecinkową. Jak możesz tego uniknąć?
def sqrt(num):
root = 0.0
while root * root < num:
root += 0.01
return root
Użycie tego ma następujące wyniki:
>>> sqrt(4)
2.0000000000000013
>>> sqrt(9)
3.00999999999998
Zdaję sobie sprawę, że mogę po prostu użyćround()
, ale chcę być w stanie uczynić to naprawdę dokładnym. Chcę móc obliczyć do 6 lub 7 cyfr. Nie byłoby to możliwe, jeśli zaokrąglałem. Chcę zrozumieć, jak poprawnie obsługiwać obliczenia zmiennoprzecinkowe w Pythonie.