Точный 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'
→ Ссылка