Zielony Smok - logo witryny

Compact Number Formatting = Kompaktowe formatowanie liczb.

Możliwości języka Java rozszerzono o formatowanie liczb do postaci kompaktowej, krótkiej i czytelnej dla człowieka. Kompaktowe formaty liczb zostały zdefiniowane tutaj.

Więcej informacji dostępne jest tutaj.

Klasy

NumFormat1

Klasa przedstawia skróty dotyczące języka polskiego.

package numformat;

import java.text.*;
import java.util.*;

public class NumFormat1 {
    public static void main(String[] args){
        NumberFormat fmt = NumberFormat.getCompactNumberInstance(Locale.getDefault(), NumberFormat.Style.SHORT);
        String result1 = fmt.format(1000);
        System.out.println(result1);
        String result2= fmt.format(1000000);
        System.out.println(result2);
        String result3= fmt.format(1000000000);
        System.out.println(result3);
        String result4 = fmt.format(1400);
        System.out.println(result4);
        String result5 = fmt.format(1500);
        System.out.println(result5);
    }
}

A oto wynik:

1 tys.
1 mln
1 mld
1 tys.
2 tys.

Zwróćmy uwagę, że 1400 = 1 tys., a 1500 = 2 tys.

NumFormat2

Klasa przedstawia sposób utworzenia własnych skrótowych symboli.

package numformat;

import java.text.*;
import java.util.*;

public class NumFormat2 {
    public static void main(String[] args) {
        final DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(Locale.getDefault());
        final String decimalPattern = decimalFormat.toPattern();
        final DecimalFormatSymbols symbols = decimalFormat.getDecimalFormatSymbols();
        final String[] compactPatterns = {"", "", "", "0KB", "00KB", "000KB", "0MB", "00MB", "000MB",
                "0GB", "00GB", "000GB", "0TB", "00TB", "000TB"};
        CompactNumberFormat bytepl = new CompactNumberFormat(decimalPattern, symbols, compactPatterns);
        String result1 = bytepl.format(1000);
        System.out.println(result1);
        String result2 = bytepl.format(1000000);
        System.out.println(result2);
        String result3 = bytepl.format(1000000000);
        System.out.println(result3);
    }
}

A oto wynik:

1KB
1MB
1GB