Округлення. Специфіка Python. Інструменти в Odoo

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

Не будемо вдаватись в історію, технічну реалізацію, а розглянемо приклади і методи як жити в таких умовах. 


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


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


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


Ну не буду вас більше лякати і розкажу як в оду ці проблеми вирішуються. А вирішуються прямо в класі fields.Float

По-перше, є функція round, яка округлює математично, але трохи бажно


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


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


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

-1 - перше число менше

0 - числа рівні

1 - перше число більше




Округлення. Специфіка Python. Інструменти в Odoo
Володимир Карабанов 11 травня 2022 р.
Поділитися цією публікацією
Теги
Архів
Домени пошуку