Робота з даними у форматі Float (числа з плаваючою комою) мають неприємну специфіку, яка прийшла ще з минулого... століття. З минулого тисячоліття. Дуже пафосно, але так: проблема ще з 8-бітних комп'ютерів.
Не будемо вдаватись в історію, технічну реалізацію, а розглянемо приклади і методи як жити в таких умовах.

І щоб ви не подумали, що це проблема Python, наведу приклад з JavaScript

Ну і приклади як це заважає нам жити:

Ну і якщо ви думаєте, що сюрпризи закінчились, то ось вам

Ну не буду вас більше лякати і розкажу як в оду ці проблеми вирішуються. А вирішуються прямо в класі fields.Float
По-перше, є функція round, яка округлює математично, але трохи бажно

тобто потребує певних милиць

По-друге, порівняння з нулем первої точності. Функція is_zero. Потрібно, наприклад, як будемо округлювати до копійок або до 10 копійок, як зараз прийнято. Як хтось не зрозумів: вона порівнює з нулем не вхідне значення, а його округлений результат

По-третє, порівняння двох чисел у заданій точності. Функція порівнює числа у заданій точності і повертає значення
-1 - перше число менше
0 - числа рівні
1 - перше число більше
