Zawsze zapominam :-)
double kilobytes = 123.45678;
DecimalFormat df = new DecimalFormat("###.##");
System.out.println("kilobytes (DecimalFormat) : " + df.format(kilobytes));
Tylko żebyś się nie zdziwił, że w liczbie jest przecinek zamiast oczekiwanej kropki jak podałem w formacie
"###.##". Otóż Java nie interpretuje tego dosłownie. Kropka jest tutaj znakiem odstępu dziesiętnego. W przypadku lokalizacji polskiej naszym naturalnym znakiem jest przecinek i stąd ta różnica.
Aby zamienić w pojedynczym miejscu przecinek na kropkę można użyć łaty:
df.format(kilobytes).replace(",", ".");
Aby zaś zastosować to na stałe użyj lokalizacji, dla której właściwym znakiem jest kropka. Na przykład amerykańskiej.
Można tymczasowo:
System.out.println(String.format(Locale.US, "%f", 3.141592));
a można na stałe:
Locale.setDefault(Locale.US);
Poprzedzanie i kończenie zerami
W którejś aplikacji potrzebowałem wiodących i kończących zer. Aplikacja współpracująca potrzebowała takiego formatu "00.000":
liczba |
wymagany format |
1 |
01.000 |
2,03 |
02.030 |
2,45 |
02.450 |
14,035 |
14.035 |
Zastosowałem więc takie rozwiązanie:
Float x = 2.35f;
DecimalFormat df = new DecimalFormat("00.000");
System.out.println(df.format(x).replace(",", "."));
na wyjściu otrzymałem:
02.350