Python formateando valores grandes
Abajo está el código para formatear un valor x que he estado usando.
Ejemplos de lo que hace:
Formatea 7,500,000 en 7.5 MFormatea 800,000 en 800 K It
def Formatting(self, x, pos):
formats = ((1e-12,'%d%s T','%1.1f T'),
(1e-9, '%d%s B','%1.1f B'),
(1e-6, '%d%s M','%1.1f M'),
(1e-3, '%d%s k','%1.1f K' ))
for i, (N, A, B) in enumerate(formats):
if abs(x) > (1./N):
result = ''
x = x * N
if abs(x) >= 1000:
x, r = divmod(x, 1000)
result = ",%03d%s" % (r, result)
return A % (x, result)
else: return B % (x)
elif 1 <= abs(x) < 1e3: return '%1.0f' % (x)
elif 0.1 <= abs(x) < 1: return '%1.1f' % (x)
elif 0 < abs(x) < 0.1: return '%1.3f' % (x)
elif x == 0: return '%1.0f' % (x)
Ahora, he estado luchando para hacer las siguientes mejoras:
En lugar de 550 M, me gustaría poder imprimir .55 B En lugar de 550 B, me gustaría poder imprimir .55 T En lugar de 550 K, me gustaría poder imprimir .55 M En lugar de 0.001, me gustaría poder imprimir .001 sin el ceroSin embargo, 55.5 M, 55.5 B, 55.5 K aún deben imprimirse, no .055 M o .055 B ..¿Sugerencias sobre cómo realizar este cambio o mejorar este código para tener impresiones más significativas (que se usan en un gráfico)?
¡Muchas gracias