Округлить 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