Все мы знаем о проблемах вычисления дробных чисел, особенно если речь идет про деньги, и например нам нужна точность два знака после точки, если в Python сделать что то вроде этого
number = 0.1 + 0.1 + 0.1
print(number) # 0.30000000000000004
Мы получим не правильное число т.к должно быть 0.30
Однако есть библиотека которая должна решить данную проблему называется она
decimal
from decimal import Decimal
number = Decimal("0.444")
number = number.quantize(Decimal("1.00"))
print(number) # 0.44
number = Decimal("0.555678")
print(number.quantize(Decimal("1.00"))) # 0.56
number = Decimal("0.999")
print(number.quantize(Decimal("1.00"))) # 1.00
Беда в том что она не решает "бугалтерскую" проблему.
И занимается округлением числе с нужной точностью.
В чем суть, если вы считаете деньги при конвертации банковской транзакции, из одной валюты в другую то:
при расчетах "0.555678" превращается в 0.55 а не в 0.56, то есть дробная часть после какова то знака просто отбрасывается. 0.999 становится 0.99 ¢ а не 1$. Думаю суть понятна.
Вопрос собственно в том есть ли уже готовые библиотеки на подобие decimal которые решают данную проблему?
Я лично в гугле сколько не искал всегда натыкаюсь исключительно на decimal.