2012-03-19 50 views

Respuesta

44

la adaptación de la respuesta de más de here que debería ser algo como

public static String withSuffix(long count) { 
    if (count < 1000) return "" + count; 
    int exp = (int) (Math.log(count)/Math.log(1000)); 
    return String.format("%.1f %c", 
         count/Math.pow(1000, exp), 
         "kMGTPE".charAt(exp-1)); 
} 

Código de ensayo:

for (long num : new long[] { 0, 27, 999, 1000, 110592, 
          28991029248L, 9223372036854775807L }) 
    System.out.printf("%20d: %8s%n", num, withSuffix(num)); 

Salida:

    0:  0 
        27:  27 
       999:  999 
       1000: 1.0 k 
       110592: 110.6 k 
     28991029248: 29.0 G 
9223372036854775807: 9.2 E 
+1

Esto es tan hermoso escrito! Gracias. – StackPWRequirmentsAreCrazy

+0

¿cómo puede hacer 1.0k a 1k si el decimal es 0? –

+1

Esta respuesta es simplemente hermosa. – Sotti

Cuestiones relacionadas