Точный float с определенным количеством знаков после запятой
Мне нужно разделить два числа, с определенным количеством знаков после запятой. Ответ с англоязычного StackOverflow мне не помог - вместо необходимого 0.000001002003004005006007008009... выдает 0.000001002003004005005955287066.... Мне нужно получить из деления двух чисел точный float с определенным количеством знаков после запятой, как это сделать?
Ответы (2 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
float имеет конечную точность - около 17 знаков. Воспользуйтесь десятичной арифметикой decimal. Её точность можно регулировать как вам удобно:
@>>> from decimal import * @>>> getcontext().prec = 6 @>>> Decimal(1) / Decimal(7) Decimal('0.142857') @>>> getcontext().prec = 28 @>>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571429') @>>> getcontext().prec = 100 @>>> Decimal(1) / Decimal(7) Decimal('0.1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571429') @>>>
Автор решения: Максим
→ Ссылка
def toFixed(numObj, digits=0):
return f"{numObj:.{digits}f}"
print(toFixed(3.506754657, 2))
'3.50'