Jak ustawić separator tysięcy w Javie?
Mam reprezentację ciągu typu BigDecimal, którą chcę sformatować za pomocą separatora tysięcy i zwrócić jako ciąg.
java
bigdecimal
Czas zabawy
źródło
źródło
Odpowiedzi:
To powinno działać (nieprzetestowane, oparte na JavaDoc):
Według JavaDoc rzutowanie w pierwszej linii powinno być zachowane dla większości lokalizacji.
źródło
getDecimalFormatSymbols()
mówi:Returns: a copy of the desired DecimalFormatSymbols
. Dlatego powinieneś użyćsetDecimalFormatSymbols(theCopy)
po zmianie kopii.new
i ustawić go z powrotem na formatyzator:DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
Możesz użyć funkcji formatowania z ",";
„,” obejmuje znaki grupowania specyficzne dla ustawień regionalnych.
dokumenty
źródło
.
separatora jako separatora?format()
z wyraźnej lokalizacji (Local.US
znane jest stosowanie,
jako separator), a następnie zastąpić,
z niestandardowego separatora:String.format(Locale.US, "%,d", n).replace(',', '.')
.int
. Lub along
. Lub aBigInteger
. I wykorzystanie f jeśli chcesz używaćdouble
,float
lubBigDecimal
.EDYTOWAĆ
Aby uzyskać niestandardowy separator grupowania, taki jak spacja, wykonaj następujące czynności:
źródło
NumberFormat
obiekt z żądanymi właściwościami i używasz go do formatowaniaBigDecimal
. ABigDecimal
ma tylko określoną wartość, nie ma określonego formatu.wypróbuj ten kod, aby sformatować taki jak używany w Brazylii:
źródło
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
Wyślij ten parametr do raportu.Jeśli używasz separatora tysięcy dla typu danych Integer, użyj 1.
String.format ("%, d \ n", 58625), a wynik będzie równy 58 625
źródło
źródło
źródło
Zaakceptowana odpowiedź musi być naprawdę zmieniona, inaczej nie zadziała. W getDecimalFormatSymbols tworzy kopię w obronie. A zatem,
Nowa linia to ta: formatter.setDecimalFormatSymbols (symbols);
źródło
Dla dziesiętnych :
źródło
Jak wspomniano powyżej, poniższy link zawiera kod kraju, który pozwala Javie zlokalizować numer. Każdy kraj ma swój własny styl.
W powyższym linku znajdziesz kod kraju, który należy umieścić tutaj:
Na przykład Szwajcaria formatuje liczby w następujący sposób:
1000,00 -> 1'000,00
kod pocztowy
Aby to osiągnąć, działają dla mnie następujące kody :
Wynik jest zgodny z oczekiwaniami:
źródło
źródło