2012-03-19 11 views

cevap

44
1.111 K olarak

here yerinden cevabını uyarlanması o

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)); 
} 

gibi görünmelidir

Testi kodu:

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

Çıktı:

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

Bu çok güzel yazılmış! Teşekkürler. – StackPWRequirmentsAreCrazy

+0

ondalık 0 ise 1.0k 1k nasıl yapabilirim? –

+1

Bu cevap sadece güzel. – Sotti