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
Bardzo przydatna rzecz, bo po co komu tyle miejsc po przecinku ;)
OdpowiedzUsuń