Округлить float после запятой

Есть решение огромного примера = 2.0155429765245318e+54. Нужно округлить либо сократить до 3 знаков после запятой. Например - 2.015 или 2.016. Format или round выдает бред. Кто что думает? Спасибо.


Ответы (1 шт):

Автор решения: Роман Мереняну-Ени

В свое время это использовал, просто измените немного как вам удоебней

def rd(x,y=0):
    ''' A classical mathematical rounding by Voznica '''
    m = int('1'+'0'*y) # multiplier - how many positions to the right
    q = x*m # shift to the right by multiplier
    c = int(q) # new number
    i = int( (q-c)*10 ) # indicator number on the right
    if i >= 5:
        c += 1
    return c/m

Сравните: print( round(0.49), round(0.51), round(0.5), round(1.5), round(2.5), round(0.15,1)) # 0 1 0 2 2 0.1

print( rd(0.49), rd(0.51), rd(0.5), rd(1.5), rd(2.5), rd(0.15,1)) # 0 1 1 2 3 0.2

→ Ссылка