Czy mogę to zrobić System.out.print
?
java
formatting
printf
decimal-point
via_point
źródło
źródło
String.format(java.util.Locale.US,"%.2f", val);
Locale.FRANCE
?Locale.US
idzie za daleko. Jeśli potrzebujesz zakodować na stałe „neutralne” ustawienia regionalne dla składania spraw, renderowania liczb itp., PodajLocale.ROOT
. Byłoby to odpowiednie dla tekstu, który zostanie zużyty przez inny program, a nie renderowany dla użytkowników. W przypadku tekstu prezentowanego użytkownikowi należy uszanować jego ustawienia narodowe, niezależnie od tego, czy podano go wyraźnie, czy jest to ustawienie domyślne.Możesz użyć
DecimalFormat
. Jednym ze sposobów użycia:Innym jest zbudowanie go przy użyciu
#.##
formatu.Uważam, że wszystkie opcje formatowania są mniej czytelne niż wywoływanie metod formatowania, ale jest to kwestia preferencji.
źródło
System.out.printf("%.2f", value)
składnią? Czy nadal jest w pobliżu?DecimalFormat
odpowiedzi, od razu pomyślałem, że się mylę, ale dziękuję za wyjaśnienie.df.setMinimumFractionDigits(2);
do siły dwie cyfrySugerowałbym użycie String.format (), jeśli potrzebujesz wartości jako
String
w swoim kodzie.Na przykład możesz użyć
String.format()
w następujący sposób:źródło
źródło
DecimalFormat df = new DecimalFormat("0.00");
źródło
Wyjście wynosi 22,35. Jeśli potrzebujesz 3 miejsc po przecinku, zmień go na „% .3f”.
źródło
Wiele osób wspomniało
DecimalFormat
. Ale możesz także użyć,printf
jeśli masz najnowszą wersję Java:Więcej informacji na temat ciągu formatu printf można znaleźć w dokumentacji Formatera .
źródło
Prostą sztuczką jest wygenerowanie krótszej wersji zmiennej przez pomnożenie jej przez np.
100
Zaokrąglenie i100.0
ponowne podzielenie . W ten sposób generujesz zmienną z 2 miejscami po przecinku :Ta „tania sztuczka” zawsze była dla mnie wystarczająca i działa w dowolnym języku (nie jestem osobą Java, tylko się jej uczę).
źródło
Możesz użyć tych szybkich kodów poniżej, które zmieniły się na końcu. Dodaj, ile zer odnosi się do kropki po punkcie
źródło
Spójrz na DecimalFormat
Oto przykład z samouczka:
Jeśli wybierzesz wzór taki jak „###. ##”, otrzymasz dwa miejsca po przecinku i myślę, że wartości są zaokrąglane w górę. Będziesz chciał spojrzeć na link, aby uzyskać dokładnie taki format, jaki chcesz (np. Czy chcesz końcowe zera)
źródło
Poniżej znajduje się kod, w jaki sposób wyświetlić dane wyjściowe danych zmiennoprzecinkowych z 2 miejscami dziesiętnymi w Javie:
źródło
OK - str do pływania.
Wynik:
źródło
mały prosty program do demonstracji:
źródło
Po prostu zrób,
String str = System.out.printf("%.2f", val).replace(",", ".");
jeśli chcesz mieć pewność, że niezależnie od ustawień regionalnych użytkownika, zawsze otrzymasz / wyświetlisz „.” jako separator dziesiętny. Jest to konieczne, jeśli nie chcesz powodować awarii programu, jeśli później wykonasz jakąś konwersjęfloat f = Float.parseFloat(str);
źródło
Jeden problem, który miał mnie przez godzinę lub dłużej
DecimalFormat
- Włącza podwójne i zmienne wejście danych inaczej. Nawet zmiana RoundingMode nie pomogła. Nie jestem ekspertem, ale pomyślałem, że to może pomóc komuś takiemu jak ja. Skończyło się na tymMath.round
zamiast. Patrz poniżej:Wynik:
źródło
Spróbuj tego:-
źródło