Jak sformatować liczbę w Javie?
Jakie są „sprawdzone metody”?
Czy przed sformatowaniem będę musiał zaokrąglić liczbę?
32.302342342342343
=>32.30
.7323
=>0.73
itp.
java
number-formatting
ScArcher2
źródło
źródło
Double.valueOf
zamiastnew Double(number).doubleValue()
. Ostatnią linijką ostatniego przykładu byłoby zatemdouble dd2dec = Double.valueOf(df2.format(dd));
Ty i
String.format()
będziesz nowymi najlepszymi przyjaciółmi!https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
źródło
String.format
służy do formatowania łańcuchów, a nie liczb.DecimalFormat
. IDecimalFormat
jest nieco szybszy niżString.format
. ProstySystem.currentTimeMillis
diff to pokazuje.Należy pamiętać, że klasy, które pochodzą od NumberFormat (i większość innych elementów podrzędnych Format) nie są synchronizowane. Powszechną (ale niebezpieczną) praktyką jest tworzenie obiektów formatu i przechowywanie ich w statycznych zmiennych w klasie util. W praktyce będzie działać prawie zawsze, dopóki nie zacznie odczuwać znacznego obciążenia.
źródło
Okrągłe liczby, tak. To jest główne przykładowe źródło .
źródło
Spróbuj tego:
Proste i wydajne.
źródło
Użyj DecimalFormat .
źródło
W bibliotece standardowej istnieją dwa podejścia. Jednym z nich jest użycie java.text.DecimalFormat. Inne, bardziej tajemnicze metody (String.format, PrintStream.printf itp.) Oparte na java.util.Formatter powinny zadowolić programistów C (ish).
źródło
Jak zauważył Robert w swojej odpowiedzi: DecimalFormat nie jest ani synchronizowany, ani API nie gwarantuje bezpieczeństwa wątków (może to zależeć od używanej wersji JVM / dostawcy).
Zamiast tego użyj Spring's Numberformatter , który jest bezpieczny dla wątków.
źródło
Na przykład, jeśli wartość double przekazana do metody formatDouble () to 345,9372, wynikiem będzie następujący: 345,937 Podobnie, jeśli do metody zostanie przekazana wartość .7697, wynikiem będzie: .770
źródło