Я пытаюсь округлить пол до int
или 1 decimal
для ненулевого float
с буквами k, M, B...
.
def human_format(num):
num = float(f'{num:.3g}')
magnitude = 0
while abs(num) >= 1000:
magnitude += 1
num /= 1000.0
num = int(num * 10) / 10
return f"{f'{num:f}'.rstrip('0').rstrip('.')}{['', 'k', 'M', 'B', 'T'][magnitude]}"
Теперь эта функция возвращается, как и ожидалось в этом случае :
human_format(1294)
'1.2k'
И округляется в следующем случае:
human_format(1295)
'1.3k'
Округление происходит из-за флага g
в строковом формате, и я не знаю, как его настроить , Как я могу избежать округления, оставляя все остальное таким же?